9

C++ 型が自明にコピー可能かどうかを確認する方法は? 指定されたテンプレート型 T で memcpy および memcmp 関数を使用するクラスがあり、memcpy で安全にコピーできない型に対してアサートを起動したいと考えています。それを行う方法はありますか(既存の標準で)?

4

3 に答える 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 に答える