0

通常、C++03 までのデストラクタは、任意の例外をスローすることが許可されていました。

ただし、C++11 では、明示的な例外指定のないすべてのデストラクタがnoexceptデフォルトになりました。これはオーバーライドできますnoexcept(false)が、このコードは C++11 より前のコンパイラでは受け入れられません。

noexcept(false)1 つの解決策は、コンパイラ固有の s をチェックすることによっての必要性を検出することです#defineが、これでも既知のコンパイラ セットに対するそのようなコードの適用可能性は制限されます。

С++11 と C++03 の両方でデストラクタから任意の例外をスローできる移植可能な方法はありますか?

4

2 に答える 2