PODの構造体があったとき、メンバ変数の初期値を指定したい、というモチベーションがあったりするのですが、PODは非自明なコンストラクタを書けないので以下はNGになります。
struct S { int x; S() : x(3) {} // NG : これだとPODにならない };
C++0xではメンバ変数の初期化をメンバ変数定義時に行うことができ、コンストラクタで明示的な初期化を書かない場合のデフォルト値を指定できるのですが、現時点でのドラフトを読む限り、非自明なコンストラクタを書いたことにはなりそうにないので、以下のように書いてもPODになりそう。
struct S { int x = 3; };
ほんとかな。ちょっと怪しい。
追記:
できないっぽいです。
@cpp_akira p252 12.1.5で、A def-ctor is trivial if ... and if ... no non-static data member of its class has a brace-or-equal-initializerなので
@cpp_akira (続き) 初期値付きのnon-staticデータメンバを持っているとデフォルトコンストラクタがtrivialではないので、そのクラスもtrivialではなくなり、つまりPODでもなくなるようです
trivialなデフォルトコンストラクタというのはすべてのデータメンバを不定値で初期化することしか出来ないようで。。。
N2628 Non-static data member initializers