代入演算子の=defaultが=deleteになるケース
さっきまで嵌っていたのですが
constメンバを含む関数で代入演算子を=defaultで自動実装させた場合
勝手に=deleteになってしまうようです
良く考えれば、constメンバに代入する事ができないため、妥当な処理なのですが
しばらく気が付きませんでした・・・・
ちなみにnoncopytableではなく、 immutableになるようです あくまで再代入ができなくなるだけのようです
class A { private: const int a_; public: A():a_(0){}; constexpr A(int a):a_(a){} ~A()=default; A(const A&)=default; A& operator=(const A&)=default; A(A&&)=default; A& operator=(A&&)=default; }; auto main()->int { auto foo = A(42); // OK // foo = A(); // Error auto bar = foo; // OK }