struct A
{
A();
A(const A&);
A& operator =(const A&);
A(A&&) = delete;
A& operator =(A&&) = delete;
};
struct B
{
B();
B(const B&);
B& operator =(const B&);
};
int main()
{
A a;
a = A(); // error C2280
B b;
b = B(); // OK
}
我的编译器是 VC++ 2013 RC。
错误 C2280:“A &A::operator =(A &&)”:试图引用已删除的函数
我只是想知道为什么编译器在删除A& operator =(const A&);
时不尝试?A& operator =(A&&)
这种行为是由 C++ 标准定义的吗?