La stringa letterale corrisponde al sovraccarico di bool invece di std :: string

Sto provando a scrivere una class C ++ con alcuni metodi sovraccaricati:

class Output { public: static void Print(bool value) { std::cout << value ? "True" : "False"; } static void Print(std::string value) { std::cout << value; } }; 

Ora diciamo che chiamo il metodo come segue:

 Output::Print("Hello World"); 

questo è il risultato

Vero

Quindi, quando ho definito che il metodo può accettare booleano e stringa, usa il sovraccarico booleano quando passo in un valore non booleano?

    EDIT: Vengo da un ambiente C # / Java, quindi abbastanza nuovo per C ++!