C ++ is_trivially_copyable检查

时间:2011-02-14 16:11:27

标签: c++ visual-c++ memcpy typetraits memcmp

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

3 个答案:

答案 0 :(得分:8)

不,在C ++ 98 / C ++ 03中不可能。这样的事情是为{C} 0x添加<type_traits>的原因。 <type_traits>的一些功能可以在C ++ 03中实现,通常使用SFINAE原则,但包括std::is_trivially_copyable<T>在内的一些功能只需要内置的编译器支持。

答案 1 :(得分:6)

在boost中有类型特征可供选择。

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

答案 2 :(得分:4)

最接近的是boost::is_pod<>