yohhoyの日記

技術的メモをしていきたい日記

C++のプライマリ型カテゴライズ

プログラミング言語C++の基本型(primary type)区分は14種類存在する。C++標準ライブラリ<type_traits>ヘッダで提供されるメタ関数により判別可能。

カテゴリ メタ関数
void is_void
std::nullptr_t is_null_pointer[C++14以降]
整数型 is_integral
浮動小数点数 is_floating_point
配列型 is_array
ポインタ型*1 is_pointer
lvalue参照型 is_lvalue_reference
rvalue参照型 is_rvalue_reference
データメンバへのポインタ型 is_member_object_pointer
メンバ関数へのポインタ型 is_member_function_pointer
列挙型 is_enum
共用型(union)*2 is_union
クラス型(class, struct)*3 is_class
関数型 is_function

関連URL:

*1:ヌルポインタ定数 nullptr の型 std::nullptr_t は “ポインタ型” ではない。(→id:yohhoy:20120503

*2:C++11 9/5: "A union is a class defined with the class-key union;"

*3:C++11 20.9.4.1, Table 47: "T is a class type but not a union type"