【问题标题】:Implicit copy constructor in presence of user-defined move constructor/assignment [duplicate]存在用户定义的移动构造函数/赋值时的隐式复制构造函数[重复]
【发布时间】:2017-06-14 20:12:36
【问题描述】:

在 cppreference 上写到,对于标准的 C++11 后版本,复制构造函数被隐式定义为已删除的情况之一如下(T 类的构造函数):

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

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

这个地方似乎是 12.8/11(至少对于 14882:2011),除上述情况外,所有其他情况似乎都在那里..

我应该在哪里寻找这种特殊情况?

【问题讨论】:

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


    【解决方案1】:

    至少在我目前最方便的草稿 (N4618) 中,它位于 §[class.copy.ctor]/6:

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

    【讨论】:

      猜你喜欢
      • 2013-03-13
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多