次のようなクラスがあります。
class C {
public:
C() : ... {}
~C() {}
Member_1 m_1;
// ...
Member_N m_N;
};
示されている 2 つの特別なメンバー関数は、宣言されている唯一のものです。
今、
static_assert(std::is_nothrow_move_assignable<Member_1>::value);
// ...
static_assert(std::is_nothrow_move_assignable<Member_N>::value);
すべて満足しています。まだ、
static_assert(std::is_nothrow_move_assignable<C>::value);
主張します。空のデストラクタを削除すると、パスします。
デストラクタは移動代入演算子とどのような関係がありますか? 5つの新しいルール?
コンパイラは GCC 4.9.3 です-std=c++0x
(歴史的な理由から)。