在C++11 中对 POD 的宽松定义下,我的理解是以下结构被视为 POD:
template <class T>
struct Foo
{
Foo()
{ }
explicit Foo(T* obj) : m_data(obj)
{ }
T* m_data;
};
-std=c++0x
但是,如果我说,使用 GCC 4.6 并使用标志进行编译:
std::cout << std::boolalpha << std::is_pod<Foo<int>>::value << std::endl;
它输出:
false
这是一个显示完整程序的ideone链接。(注意 ideone 使用 GCC 4.5)
那么,我对 C++11 中 POD 的理解是错误的,还是 GCC 4.6 在 C++11 合规性方面根本不是最新的?