在 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;
}