Я хотел бы иметь С++ 0x static_assert, который проверяет, является ли данный тип структуры POD (чтобы другие программисты случайно не нарушили его с новыми членами). то есть,
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." );
}
Есть ли какой-то макрос или int is_pod_type()
, который я могу использовать здесь? Я не мог найти его в каких-либо документах С++ 0x, но, конечно, информация о сети на 0x все еще довольно фрагментарная.