c++ - 在什么情况下我们需要知道一个类是否微不足道?

标签 c++ class c++11 typetraits

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

有例子吗?

我的一些想法:

假设类 T 是平凡的,这是否意味着 T 可以被 memcpy 安全地复制像这样:

T t1, t2;
memcpy(&t1, &t2, sizeof(T));

?

最佳答案

如果一个类型很简单,它可以,例如,用 memcpy 复制.这是用作 std::atomic 参数的用户定义类型的要求模板。也就是说,对于用户定义的类型 T , atomic<T>允许(并且对于更大的类型,需要)从 T 类型的对象实现赋值到 atomic<T> 类型的对象与 memcpy .类似地,在需要时使用 memcmp 进行相等性测试。 .

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

关于c++ - 在什么情况下我们需要知道一个类是否微不足道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14984871/

相关文章:

c++从头文件vs在cpp文件中访问变量

python - 类实例实现,初始化实例——来自SICP python

python - 在 Python 中使用类根据用户输入打印出实例属性

c++ - 读到 C++ 中的新行进入无限循环

c++ - 通用引用和本地类

c++ - 将类添加到基本 Qt GUI 应用程序时出现 Qt 链接器错误

python - Pybind11:将 Python 列表传递给 C 样式数组

c++ - 为什么析构函数被调用两次而构造函数只被调用一次?

c++ - 如何使用基于范围的 for 循环重写此代码?

c++11 - 用户声明的隐式声明的 move 赋值运算符意味着什么?