comp.std.c++ - type traits if void type
以下、VC++10 Betaでの検証結果(VC9 SP1も同様)
#include <iostream> #include <type_traits> using namespace std; int main() { cout << is_pod<void>::value << endl; // 1 cout << has_trivial_constructor<void>::value << endl; // 1 cout << has_trivial_destructor<void>::value << endl; // 1 cout << has_trivial_copy_constructor<void>::value << endl; // 1 cout << has_trivial_assign<void>::value << endl; // 1 cout << has_nothrow_default_constructor<void>::value << endl; // 1 cout << has_nothrow_copy_constructor<void>::value << endl; // 1 cout << has_nothrow_assign<void>::value << endl; // 1 }
voidはPODじゃないのでis_pod<void>はfalseを返すべきで、
voidはコンストラクタやデストラクタを持ってないのでhas_xxx_constructor/destructorもfalseを返すべきです。