在什么情况下我们需要知道一个班级是否微不足道?

xml*_*lmx 2 c++ class type-traits c++11

std::is_trival<T>::value可以确定T类是否是微不足道的.但是,我想不出需要这些信息的场景.

有什么例子吗?

我的一些想法:

如果T类是微不足道的,它是否意味着T可以安全地复制,memcpy如下所示:

T t1, t2;
memcpy(&t1, &t2, sizeof(T));
Run Code Online (Sandbox Code Playgroud)

Pet*_*ker 6

如果一个类型是微不足道的,它可以,例如,复制memcpy.这是用作std::atomic模板参数的用户定义类型的要求.也就是说,对于一个用户定义的类型T,atomic<T>被允许(并且,对于较大的类型,所需的)来实现从类型的对象分配T到类型的对象atomic<T>memcpy.同样,在需要时,测试是否相等memcmp.

使用这些C函数而不是C++运算符的原因是原子操作不会对用户代码进行任何调用.这样做可能会导致无辜的代码出现神秘的死锁.

  • 另一件事是,普通类型不需要调用它们的析构函数,这可能会提高效率,例如,`std :: vector <trivial>`.因此,它不仅安全,而且效率高. (3认同)