3

GCC 5.2 と clang 3.6 を両方とも C++14 モードでテストしており、同じ出力が得られます。

次のコードの場合

#include <iostream>
#include <type_traits>

struct S {
  // S& operator= (S&&) noexcept { return *this; }
};


int main() {
  std::cout << std::is_nothrow_move_constructible<S>::value
            << std::is_nothrow_move_assignable<S>::value;  
}

結果11が得られます。ただし、移動代入演算子のコメントを外すと、出力は になり01ます。noexcept移動代入演算子の明示的な指定は、移動コンストラクターの指定にどのように影響する可能性がありますか?

4

5 に答える 5

5

移動代入を宣言すると、暗黙の移動コンストラクターが失われます。
以下の完全なチャートを参照してください。

ここに画像の説明を入力

于 2015-10-10T18:50:06.073 に答える