Я пытался очистить код, который использует char* с std::string, и столкнулся с проблемой, которая проиллюстрирована следующим кодом.
void Foo( int xIn , const std::string & fooIn )
{
std::cout << "string argument version called \n";
}
void Foo( int xIn , bool flagIn = true )
{
std::cout << "bool argument version called \n";
}
int main()
{
int x = 1;
Foo( x , "testing" );
return 0;
}
Когда я запускаю программу, я получаю аргумент аргумента bool под названием. Является ли преобразование char* в bool предпочтительным по сравнению с char* - const std::string& или Visual Studio 2008 играет на меня трюки?