这是一项技术要求,编译器无法以任何方式执行此操作或执行纯粹的安全性建议吗?
答案 0 :(得分:1)
不,原因不是技术性的。
自动生成的特殊成员函数的设计有点像POD / C风格的struct
类似操作,但是扩展了。这使得C ++类型的行为更加统一。
但并非所有类型的行为都应该如此。出于纯粹的语言/代码设计原因,C ++根据标准中规定的规则停止自动生成一些 - 决定删除它们比留下它们被惊讶或缺乏经验调用更好。可能有今天设计的语言,规则或3/5将明确如何隐式禁用成员函数自动生成。
C ++ 11添加=default
作为一种方式,以便将它们带回来。
移动特殊成员函数都必须处理C ++ 03向后兼容性,而不是破坏现有代码。这里也没有技术障碍,只是语言设计和后向兼容性问题。