Belirli bir yapı türünün POD olup olmadığını sınayan bir C++ 0x static_assert olması (diğer programcıların istemeyerek yeni üyelerle bozmasını önlemek). yani Bir C++ 0x yapısının POD olup olmadığını belirlemek için bir derleme zamanı func/makro var mı?
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()
çeşit Burada kullanabileceğiniz makro veya içsel var mı? Herhangi bir C++ 0x belgesinde bulamadım, ancak elbette web'in 0x'deki bilgileri hala oldukça parçalı.
Not C++ 0x'da, B yapısının POD olmaması gerektiğinden, bir * önemsiz varsayılan kurucu * yoktur (N3242'de 9.0.10 ve 9.0.6'ya bakın). Önemsiz bir varsayılan kurucu olarak tam olarak ne sayıldığından emin değilim (bkz. 12.1.5), ancak B() = default = 'ekleme yapısının B + + 0x POD'a dönüştürebileceğinden şüpheleniyorum. – Sjoerd