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