我想要一个 C++0x static_assert来测试给定的结构类型是否是POD(以防止其他程序员无意中用新成员破坏它)。IE,
struct A // is a POD type
{
int x,y,z;
}
struct B // is not a POD type (has a nondefault ctor)
{
int x,y,z;
B( int _x, int _y, int _z ) : x(_x), y(_y), z(_z) {}
}
void CompileTimeAsserts()
{
static_assert( is_pod_type( A ) , "This assert should not fire." );
static_assert( is_pod_type( B ) , "This assert will fire and scold whoever added a ctor to the POD type." );
}
is_pod_type()
我可以在这里使用某种宏或内在函数吗?我在任何 C++0x 文档中都找不到,但当然,网络上关于 0x 的信息仍然相当零碎。