【发布时间】:2018-03-06 07:00:21
【问题描述】:
就我的理解而言,五法则是指导性法则。尽管如此,我已经看到编译器在某些情况下可能会隐式删除函数。比如定义move-ctor'时,会删除copy assignment/copy ctor'。
我想知道是否还有上述情况。也就是说,自定义函数在哪些场景下可以隐式删除其他函数?
谢谢
编辑:
引用一些涵盖该主题的来源也可以!
【问题讨论】:
-
只有三个特殊成员总是被隐式声明,如果不是用户声明的话:复制构造函数、复制赋值和析构函数。如果操作不可用,它们的每个隐含声明都可能是已删除声明。
-
所有这些都包含在 C++ 标准中,在 "special member functions" 下。只需在该部分中查找“已删除”一词即可。
-
在某处有一个关于此的 nixe 矩阵(可能是某个会议上的演讲的一部分),但看在上帝的份上,我找不到正确的答案。
-
@aschepler,太棒了!谢谢!
标签: c++ c++11 rule-of-three