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