C++ 14中[class.copy]/12下面的大胆文本的目的是什么?

Ale*_*der 6 c++ language-lawyer c++14

C++ 14中的[class.copy]/12:

如果不是用户提供的,则类X的复制/移动构造函数是微不足道的,其参数类型列表等效于隐式声明的参数类型列表,如果

  • (12.1) - 类X没有虚函数(10.3),没有虚基类(10.1),和
  • (12.2) - 类X没有volatile限定类型的非静态数据成员,和
  • (12.3) - 选择复制/移动每个直接基类子对象的构造函数是微不足道的,并且
  • (12.4) - 对于类类型(或其数组)的X的每个非静态数据成员,选择复制/移动该成员的构造函数是微不足道的;

否则复制/移动构造函数是非平凡的.

我可以看到上面的句子在N4606中被删除了,但我在C++标准核心语言活动问题修订版96中找不到任何东西来证明它从C++中删除14.

Bar*_*rry 6

这是CWG 2171的结果.删除的文本仅在一种情况下更改含义:

struct X {
    X(X& ) = default; // not user-provided
                      // parameter-type-list differs from implicit declaration's X const&
                      // wasn't trivial before, is trivial now
};
Run Code Online (Sandbox Code Playgroud)

但是这个复制构造函数是否微不足道是一个单独的问题,它是否实际上是可以调用的,因此原始文本被认为与标准的通常意图不一致,因此被删除.