代入演算子の=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
}

http://melpon.org/wandbox/permlink/zG3qIunbNIH3iTpN