存在用户定义的移动构造函数/赋值时的隐式复制构造函数

时间:2017-06-14 20:12:37

标签: c++ c++11 c++14 language-lawyer copy-constructor

它是在cppreference上写的,对于C ++ 11版本的标准,当复制构造函数被隐式定义为已删除时,其中一个例子是(T类的构造函数):

  

T具有用户定义的移动构造函数或移动赋值运算符;

根据编译器的说法似乎是正确的,但是我没有设法在标准中找到它......

这个地方似乎是12.8 / 11(至少14882:2011),所有其他情况似乎都在那里,除了前面提到的..

我应该在哪里寻找这个特例?

1 个答案:

答案 0 :(得分:4)

至少截至目前最简单的草案(N4618),它是在§[class.copy.ctor] / 6:

  

如果类定义没有显式声明复制构造函数,则隐式声明非显式构造函数。如果类定义声明了移动构造函数或移动赋值运算符,则隐式声明的复制构造函数被定义为已删除;否则,它被定义为默认值(8.4)。