2017-02-12 7 views
0

私のプロジェクトにはいくつかのライブラリがあります。 これらのほとんどは、任意の移動コンストラクタで "noexcept"を指定します。 移動コンストラクタに「noexcept」と書く必要があるのですか、それとも時々読書コードで起こったのですか?movコンストラクタにnoexcept指定子は常に必要ですか?

ありがとうございます。

答えて

0

私は、これはあなたが移動のコンストラクタにnoexceptを参照してください理由を説明すると思う:

「例外が発生した後、オブジェクトは元の値を維持する場合、クラスは、強力な例外保証を提供して明示的にクラスの移動メンバー。いくつかのメンバが移動された後で例外がスローされると、from例外オブジェクトが変更されたときにStrong Exception Guaranteeが保持されなくなる可能性があります。コンテナ内の要素型の移動コンストラクタがnoexceptでない場合、コンテナは移動コンストラクタではなくコピーコンストラクタを使用します。

質問に答えるには、コンストラクタが例外をスローする可能性があるすべてのケースでnoexceptを使用する必要があります。使用しないで、例外が発生した場合、強力な例外保証が失敗し、コードのエラー回復に問題が発生する可能性があります。

出典:http://www.codingstandard.com/rule/12-5-4-declare-noexcept-the-move-constructor-and-move-assignment-operator/

関連する問題