3

型に失敗できないスワップ関数がある場合、これにより、他の関数が強力な例外安全保証を提供しやすくなります。これは、最初に関数のすべての作業を実行して、失敗する可能性があるためです。次に、非スロー スワップを使用して作業をコミットします。

ただし、スワップが決して失敗しないことを保証することの他の利点はありますか?

例えばノーフェイルスワップが存在することで、別の機能が基本的な保証を提供しやすくなる状況はありますか?

4

1 に答える 1

0

私がこれをするとしましょう:

class C {
  T a, b;  // invariant: a > b
  void swap(C& other);
};

T::swap(T&) がスローされる可能性がある場合、基本的な保証で C::swap() を実装する方法はないようです。間接的なレベルを追加して、T の代わりに T* を格納する必要があります。

于 2013-02-05T02:13:19.153 に答える