Я пытался очистить код, который использует 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 играет на меня трюки?