std::string
имеет конструктор, который принимает const char*
в строку с нулевым символом в конце.
false
можно использовать в качестве константы нулевого указателя, поскольку это целочисленное выражение константы со значением ноль, поэтому используется этот конструктор std::string
.
Передача нулевого указателяэтому конструктору дает неопределенное поведение.Ваша реализация Стандартной библиотеки помогает вам, генерируя исключение logic_error
, чтобы сообщить вам, что вы нарушили ограничения конструктора std::string
, передав ему нулевой указатель.Другие реализации могут быть не очень полезны (вы можете получить немедленный сбой или повреждение данных или кто что знает).