GCC 4.6 では、ムーブ コンストラクターによって子の代入演算子が暗黙的に削除された場合でも、親の代入演算子を継承できます。GCC (および Clang) の新しいバージョンでは、これはもはや不可能です。子クラスに親の代入演算子を使用させる適切な方法は何ですか?
struct A
{
A & operator=(A const & other) = default;
};
struct B : public A
{
B() {}
B(B && other) {}
using A::operator=;
};
int main()
{
B b1, b2;
b1 = b2; // error: use of deleted function because B's operator= is implicitly deleted due to move constructor
return 0;
}