在C++中std::is_trivially_copy_constructible中有哪些琐碎操作

1bqhqjot  于 2022-12-01  发布在  其他
关注(0)|答案(1)|浏览(116)

下面是cppreference.com上std::is_copy_constructible(1)和std::is_trivially_copy_constructible(2)文档的摘录:
1)检查类型是否为CopyConstructible,即是否具有可访问的显式或隐式复制构造函数。如果满足要求,则提供等于true的成员常量值,否则值为false。
2)与(1)相同,但复制构造函数表达式不调用任何非平凡的操作。
那么,这里什么被认为是微不足道的操作呢?

j91ykkif

j91ykkif1#

下面引用我的previous answer中的一段话来解释:
如果类X的复制/移动构造函数不是用户提供的并且

  • 类X没有虚函数(10.3)和虚基类(10.1),并且
  • 选择用来复制/移动每个直接基类子对象的构造函数是平凡的,并且
  • 对于X的类类型(或其数组)的每个非静态数据成员,被选择来复制/移动该成员的构造函数是平凡的;
    否则复制/移动构造函数是重要的。
    基本上,这意味着如果复制或移动构造函数不是用户提供的,类中没有任何虚拟内容,并且此属性递归地适用于类的所有成员和基类,则它是微不足道的。

相关问题