C++0x 10
■ このスレッドは過去ログ倉庫に格納されています
0898デフォルトの名無しさん
2010/09/28(火) 07:32:52デストラクターの中で例外を使うというのは、問題になる。
例外を投げた結果、デストラクターが実行されているとしたらどうなる?
struct S
{
~S()
{
try {
throw 0 ;
} catch(...) { }
}
} ;
void f()
{
S s ;
throw 0 ;
// sのデストラクターを呼び出す
}
この例では、S::~S()の外には例外を投げないものの、
すでに例外が発生しているので、デストラクター内のthrow文を実行した時点で、
例外が重複することになり、エラーとなる。
したがって、例外を投げたことによるデストラクターの実行ではない保証できる場合でしか、
デストラクターの中で、安全に例外を使うことはできない。
■ このスレッドは過去ログ倉庫に格納されています