Why is C++ casting the string literal I pass in as a bool rather than a string?
#include <iostream>
using namespace std;
class A
{
    public:
        A(string v)
        {
            cout << v;
        }
        A(bool v)
        {
            cout << v;
        }
};
int main()
{
    A("hello");
    return 0;
}
Output: 1
Is it because the compiler isn't smart enough to make the jump from char * to string and rather just assumes that bool is the closest thing to a pointer? Is my only option to make an explicit char * constructor that basically does the exact same thing as the string constructor?
 
     
     
     
     
    