如果我定义一个自己的赋值运算符,它的签名与通常生成的默认赋值运算符不同:
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& ;.并且有一个注释强调模板的实例化不会抑制隐式声明.
原文地址:https://www.jb51.cc/c/117313.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。