9

如何检查 C++ 类型是否可以轻松复制?我有一个类,它使用具有指定模板类型 T 的 memcpy 和 memcmp 函数,我想为类型触发断言,使用 memcpy 复制这些类型是不安全的。有没有办法做到这一点(使用现有标准)?

4

3 回答 3

10

不,在 C++98/C++03 中不可能。像这样的东西<type_traits>被添加到 C++0x 中的原因。一些特性<type_traits>可以在 C++03 中实现,通常使用 SFINAE 原则,但包括 在内的一些特性std::is_trivially_copyable<T>只需要内置编译器支持。

于 2011-02-14T16:17:03.763 回答
5

在 boost 中有可用的类型特征。

然而,你在浪费你的时间——如果类型是可简单复制的,那么 memcpying 类型不会比优化器使用复制构造函数生成的更快。只需使用复制构造函数。

于 2011-02-14T16:15:32.667 回答
4

最接近的是boost::is_pod<>​​ 。

于 2011-02-14T16:14:53.213 回答