Есть ли функция времени компиляции / макрос, чтобы определить, является ли структура C ++ 0x POD?

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

22
задан Community 23 May 2017 в 11:45
поделиться