0

通常、例外をスローしないことを保証するいくつかの特別な関数があります。

  • デストラクタ
  • swap方法

この回答swapに記載されているように、次の実装を検討してください。

friend void swap(dumb_array& first, dumb_array& second)
{
    using std::swap; 

    swap(first.mSize, second.mSize);  
    swap(first.mArray, second.mArray);  // What if stack overlow occurs here?
}

swap整数用とポインタ用の2 つの関数を使用します。2 番目の関数でスタック オーバーフローが発生した場合はどうなるでしょうか。オブジェクトが破損します。ではなく、std::exceptionある種のシステム例外だと思いWin32-exceptionます。しかし、関数を呼び出しているため、スローしないことを保証できません。

しかし、すべての信頼できるソースは問題ないswapように使用され、ここで例外がスローされることはありません。なんで?

4

2 に答える 2