C++11での POD の定義が緩和されているため、次の構造体が POD と見なされることを理解しています。
template <class T>
struct Foo
{
Foo()
{ }
explicit Foo(T* obj) : m_data(obj)
{ }
T* m_data;
};
ただし、GCC 4.6 を使用し、-std=c++0x
フラグを使用してコンパイルすると、次のようになります。
std::cout << std::boolalpha << std::is_pod<Foo<int>>::value << std::endl;
以下を出力します。
false
これは完全なプログラムを示すアイデアリンクです。(ideone は GCC 4.5 を使用することに注意してください)
では、C++11 の POD に関する私の理解は間違っているのでしょうか、それとも GCC 4.6 は単に C++11 準拠に関して最新ではないのでしょうか?