C++ 型が自明にコピー可能かどうかを確認する方法は? 指定されたテンプレート型 T で memcpy および memcmp 関数を使用するクラスがあり、memcpy で安全にコピーできない型に対してアサートを起動したいと考えています。それを行う方法はありますか(既存の標準で)?
質問する
2327 次
3 に答える
10
いいえ、C++98/C++03 ではできません。<type_traits>
このようなことがC++0x に追加された理由です。の機能の一部は<type_traits>
、多くの場合 SFINAE 原則を使用して C++03 で実装できますが、std::is_trivially_copyable<T>
組み込みのコンパイラ サポートが必要なだけの機能もあります。
于 2011-02-14T16:17:03.763 に答える
5
ブーストでこれに使用できる型特性があります。
しかし、あなたは時間を無駄にしています - 型が自明にコピー可能な場合、型を memcpy することは、オプティマイザーがコピーコンストラクターで生成するものよりも速くなりません。コピーコンストラクターを使用するだけです。
于 2011-02-14T16:15:32.667 に答える
4
最も近いのはboost::is_pod<> です。
于 2011-02-14T16:14:53.213 に答える