String literal corresponde à sobrecarga de bool em vez de std :: string
Eu estou tentando escrever uma classe de C ++ que tenha alguns métodos sobrecarregados:
class Output
{
public:
static void Print(bool value)
{
std::cout << value ? "True" : "False";
}
static void Print(std::string value)
{
std::cout << value;
}
};
Agora vamos dizer que eu chamo o método da seguinte forma:
Output::Print("Hello World");
esse é o resultado
Verdade
Então, por que, quando eu defini que o método pode aceitar booleano e string, ele usa a sobrecarga booleana quando eu passo um valor não-booleano?
EDIT: eu venho de um ambiente C # / Java, então muito novo para C ++!