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