Они оба являются потенциальным совпадением, но компилятор предпочитает версию bool
, поскольку для соответствия версии string
требуется предоставляемая пользователем (или, в данном случае, предоставляемая библиотекой) функция преобразования.
Если вы действительно хотите это сделать, перегрузка для const char*
может привести вас туда:
void Foo( int xIn, const char* in)
{
return Foo( xIn, string(in) );
}
Я бы предположил, что при этом очень хороший шанскомпилятор выполнит на нем немало оптимизаций.