Здравствуйте, Masterspline, Вы писали:
M>std::map::find() в качестве аргумента принимает Key& (а это std::string) и не факт, что оптимизатор сможет удалить создание временной строки.
В std::map есть несколько методов find. Как указанный вами с аргументом
const Key&, так и шаблонный
template< class K > iterator find( const K& x );
который будет выбираться для
const char*.
И при прозрачном компараторе он внутри себя не будет конструировать
std::string, а напрямую будет сравнивать
std::string с
const char*