如果我定义一个自己的赋值运算符,它的签名与通常生成的默认赋值运算符不同:
struct B; struct A { void operator = (const B& b) { // assign something } };
默认赋值运算符,在这种情况下,运算符=(A&)(或类似的,如果错误则纠正我)变为未定义/不可访问?
如果我们定义了一些其他构造函数,那么AFAIK对于默认构造函数是正确的,它不存在.
但我真的不确定其他“神奇”默认情况是否属于这种情况.
解决方法
No. 12.8 / 9表示X类的赋值运算符必须是非静态的非模板,其参数类型为X,X& X const& X volatile&或X const volatile& ;.并且有一个注释强调模板的实例化不会抑制隐式声明.