Я хотел бы иметь 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 все еще довольно фрагментарна.