より効果的な C++で、Scott Meyers は言います
C++ は、例外としてスローされたオブジェクトがコピーされることを指定します。
次に、コピー コンストラクターが順番に例外をスローすると、std::terminate
が呼び出されるので、これがすべての例外のコピー コンストラクターを宣言する正当な理由になるnoexcept
と思います (また、ヒープからメモリを割り当てるオブジェクトをスローしないように、のようにstd::string
)。
std::bad_alloc
しかし、GCC 4.7.1 に同梱されている標準ライブラリの実装では、とのコピー コンストラクタが定義されていないことに驚きましたstd::exception
。彼らはそれらを定義すべきではありませんnoexcept
か?