以下是cppreference.com上 std::is_copy_constructible (1) 和std::is_trivially_copy_constructible (2)文档的摘录:
1) 检查一个类型是否是 CopyConstructible,即是否具有可访问的显式或隐式复制构造函数。如果满足要求,则提供等于 true 的成员常量值,否则为 false。
2) 同(1),但复制构造函数表达式不调用任何不平凡的操作。
那么这里认为什么是微不足道的操作呢?
以下是cppreference.com上 std::is_copy_constructible (1) 和std::is_trivially_copy_constructible (2)文档的摘录:
1) 检查一个类型是否是 CopyConstructible,即是否具有可访问的显式或隐式复制构造函数。如果满足要求,则提供等于 true 的成员常量值,否则为 false。
2) 同(1),但复制构造函数表达式不调用任何不平凡的操作。
那么这里认为什么是微不足道的操作呢?
正如我之前所说:
那么,所有这些琐碎和不平凡的事情是什么?
类 X 的复制/移动构造函数是微不足道的,如果它不是用户提供的,并且如果
— X 类没有虚函数 (10.3) 和虚基类 (10.1),并且
— 选择复制/移动每个直接基类子对象的构造函数是微不足道的,并且
— 对于 X 的每个类类型(或其数组)的非静态数据成员,选择复制/移动该成员的构造函数是微不足道的;
否则复制/移动构造函数是不平凡的。
基本上,这意味着如果不是用户提供的,复制或移动构造函数是微不足道的,该类中没有任何虚拟内容,并且该属性对类的所有成员和基类递归地保持。