为什么新的 C++ 异常不是从 std::logic_error 派生的?

Bar*_*uch 6 c++ exception c++11

C++11 和 C++17 添加了一些新的异常类型,例如bad_optional_accessbad_variant_accessbad_weak_ptr其他一些。它们都直接源自std::exception. 在我看来,如果首先进行一些检查,这些都是可以预防的,因此应该从std::logic_error.

有谁知道为什么他们不这样定义?