読者です 読者をやめる 読者になる 読者になる

VC++のtype_traitsはvoidの適用結果がおかしい

VC++

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を返すべきです。