¿Por qué hay una conversión de tipo implícito de punteros a bool en C ++?

Considera la clasefoo con dos constructores definidos así:

class foo
{
public:
    foo(const std::string& filename) {std::cout << "ctor 1" << std::endl;}
    foo(const bool some_flag = false) {std::cout << "ctor 2" << std::endl;}
};

¿Instanciar la clase con un literal de cadena y adivinar a qué constructor se llama?

foo a ("/path/to/file");

Salida:

ctor 2

No sé sobre ti, pero no creo que sea el comportamiento más intuitivo en el historial de programación. Sin embargo, apuesto a que hay una razón inteligente para ello, y me gustaría saber qué podría ser.

Respuestas a la pregunta(3)

Su respuesta a la pregunta