C++ is_trivially_copyable检查

axe*_*axe 8 c++ memcpy type-traits memcmp visual-c++

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

asc*_*ler 8

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


Pup*_*ppy 6

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

但是,你是在浪费你的时间memcpying一个类型不是会比你的优化器将与拷贝构造函数产生,如果该类型更快的平凡的可复制.只需使用复制构造函数.