少なくとも私はそれは本当に平凡人の言葉では、たくさんの追加の説明のせずに行うことはできないと思う。 1つの重要な点は、静的対動的初期化ですが、一般人にはそれ自体がいくつかのページになると説明しています...
PODはC++ 98で(誤って)定義されていました。 C++でC構造体宣言をコンパイルすると、Cで宣言したものと同じでなければなりません。2)PODは、静的な使用/静的使用のみ必要です。 (動的ではない)初期化。
C++ 0x/11は、 "些細"と "標準レイアウト"を優先して(ほとんど) "POD"指定を完全に削除します。標準レイアウトは、最初のインテントをキャプチャすることを意図しています.Cと同じレイアウトのものを作成します。トリビアルは静的初期化のサポートを取得することを意図しています。
初期化とnew T
対new T()
取引以来、あなたおそらくはis_trivial
をしたいです。
コンパイラの魔法が必要かどうかはわかりません。私の即時の反応はおそらくはいでしょうが、人々がTMPを使って行ったことのいくつかを知っているので、誰かがこれをやっていけないと確信するのは難しいです...
編集:ただN3290から例を引用:
struct N { // neither trivial nor standard-layout
int i;
int j;
virtual ~N();
};
struct T { // trivial but not standard-layout
int i;
private:
int j;
};
struct SL { // standard-layout but not trivial
int i;
int j;
~SL();
};
struct POD { // both trivial and standard-layout
int i;
int j;
};
あなたは間違いなく推測できるとおり、POD
もPODの構造体です。
私はこのことを少し遅刻すると思います。しかし詳細な精巧な答えを探している人にとって、ここにリンクがあります。答えをR Martinho Fernandesによって確認してください。http://stackoverflow.com/questions/4178175/what-are-aggregates-and-pods-and-how-why-are-they-special/4178176#4178176 – jmishra