为什么允许将 0 或 nullptr 分配给 std::string,即使它会直接导致运行时异常?

Why is assignment of 0 or nullptr to std::string allowed, even when it results in a straight forward runtime exception?

std::string s = 0;  // = nullptr ---> throws `std::logic_error`

以上语句导致分段错误。为什么允许?
[至少 nullptr 的构造函数重载应该是 =delete,不是吗?]

在这种情况下,const char* 的构造函数会由于重载解析的工作方式而被调用。

并且如果该指针是 nullptr,则标准库会尝试取消引用具有未定义结果的空指针值。

std::string 已经臃肿得可怕。我的猜测是,没有人能够说服 C++ 标准委员会相信拥有 std::string(std::nullptr_t) 构造函数的优点。