最終更新日時:
が更新

履歴 編集

<type_traits>

type_traits(C++11)

<type_traits>ヘッダでは、型の特性を判定、操作するためのクラスを定義する。

このライブラリに含まれるクラステンプレートは、メタ関数(meta function)と呼ばれている。

ヘルパークラス

名前 説明 対応バージョン
integral_constant 定数を表す型 (class template) C++11
true_type trueを表す型 (typedef) C++11
false_type falseを表す型 (typedef) C++11

基本的な型

名前 説明 対応バージョン
is_void 型がvoid型か調べる (class template) C++11
is_null_pointer 型がnullptr_t型か調べる (class template) C++14
is_integral 型が整数型か調べる (class template) C++11
is_floating_point 型が浮動小数点型か調べる (class template) C++11
is_array 型が配列型か調べる (class template) C++11
is_pointer 型がポインタ型か調べる (class template) C++11
is_lvalue_reference 型が左辺値参照型か調べる (class template) C++11
is_rvalue_reference 型が右辺値参照型か調べる (class template) C++11
is_member_object_pointer 型がデータメンバへのポインタ型か調べる (class template) C++11
is_member_function_pointer 型がメンバ関数へのポインタ型か調べる (class template) C++11
is_enum 型が列挙型か調べる (class template) C++11
is_union 型が共用型か調べる (class template) C++11
is_class 型がクラス型か調べる (class template) C++11
is_function 型が関数型か調べる (class template) C++11

組み合わせた型

名前 説明 対応バージョン
is_reference 型が参照型か調べる (class template) C++11
is_arithmetic 型が算術型か調べる (class template) C++11
is_fundamental 型が単純型か調べる (class template) C++11
is_object 型がオブジェクト型か調べる (class template) C++11
is_scalar 型がスカラ型か調べる (class template) C++11
is_compound 型が複合型か調べる (class template) C++11
is_member_pointer 型がメンバポインタ型か調べる (class template) C++11

型の特性

名前 説明 対応バージョン
is_const 型がconst修飾型か調べる (class template) C++11
is_volatile 型がvolatile修飾型か調べる (class template) C++11
is_trivial 型がトリビアル型か調べる (class template) C++11
is_trivially_copyable 型がトリビアルコピー可能か調べる (class template) C++11
is_standard_layout 型がスタンダードレイアウト型か調べる (class template) C++11
is_pod 型がPOD型か調べる (class template) C++11
is_literal_type 型がリテラル型か調べる (class template) C++11
is_empty 型が空のクラスか調べる (class template) C++11
is_polymorphic 型が多相的クラスか調べる (class template) C++11
is_abstract 型が抽象クラスか調べる (class template) C++11
is_final 型にfinalが付いているかを調べる (class template) C++14
is_signed 型が符号付き算術型か調べる (class template) C++11
is_unsigned 型が符号無し算術型か調べる (class template) C++11
is_constructible 型のコンストラクタ呼出しが適格か調べる (class template) C++11
is_default_constructible 型がデフォルト構築可能か調べる (class template) C++11
is_copy_constructible 型がコピー構築可能か調べる (class template) C++11
is_move_constructible 型がムーブ構築可能か調べる (class template) C++11
is_assignable 型が代入可能か調べる (class template) C++11
is_copy_assignable 型がコピー代入可能か調べる (class template) C++11
is_move_assignable 型がムーブ代入可能か調べる (class template) C++11
is_destructible 型が破棄可能か調べる (class template) C++11
is_trivially_constructible 型がトリビアルに構築可能か調べる (class template) C++11
is_trivially_default_constructible 型がトリビアルにデフォルト構築可能かを調べる (class template) C++11
is_trivially_copy_constructible 型がトリビアルにコピー構築可能か調べる (class template) C++11
is_trivially_move_constructible 型がトリビアルにムーブ構築可能か調べる (class template) C++11
is_trivially_assignable 型がトリビアルに代入可能か調べる (class template) C++11
is_trivially_copy_assignable 型がトリビアルにコピー代入可能か調べる (class template) C++11
is_trivially_move_assignable 型がトリビアルにムーブ代入可能か調べる (class template) C++11
is_trivially_destructible 型がトリビアルに破棄可能か調べる (class template) C++11
is_nothrow_constructible 型のコンストラクタ呼出しが適格であり、かつそのコンストラクタが例外を投げないか調べる (class template) C++11
is_nothrow_default_constructible 型がデフォルト構築でき、かつそのデフォルトコンストラクタが例外を投げないか調べる (class template) C++11
is_nothrow_copy_constructible 型がコピー構築でき、かつそのコピーコンストラクタが例外を投げないか調べる (class template) C++11
is_nothrow_move_constructible 型がムーブ構築でき、かつそのムーブコンストラクタが例外を投げないか調べる (class template) C++11
is_nothrow_assignable 型の代入演算子呼び出しが適格であり、かつその代入演算子が例外を投げないか調べる (class template) C++11
is_nothrow_copy_assignable 型がコピー代入でき、かつそのコピー代入演算子が例外を投げないか調べる (class template) C++11
is_nothrow_move_assignable 型がムーブ代入でき、かつそのムーブ代入演算子が例外を投げないか調べる (class template) C++11
is_nothrow_destructible 型が破棄でき、かつそのデストラクタが例外を投げないか調べる (class template) C++11
has_virtual_destructor 型が仮想デストラクタを持っているか調べる (class template) C++11

型の特性についての問い合わせ

名前 説明 対応バージョン
alignment_of 型のアライメントを取得する (class template) C++11
rank 配列型の次元数を取得する (class template) C++11
extent 配列型のi番目の次元の要素数を取得する (class template) C++11

型の関係

名前 説明 対応バージョン
is_same 二つの型が同じ型か調べる (class template) C++11
is_base_of ある型が別の型の基底クラスか調べる (class template) C++11
is_convertible ある型から別の型へ変換可能か調べる (class template) C++11

const-volatile の変更

名前 説明 対応バージョン
remove_const 型のconst修飾を除去する (class template) C++11
remove_volatile 型のvolatile修飾を除去する (class template) C++11
remove_cv 型のconst-volatile修飾を除去する (class template) C++11
add_const 型をconst修飾する (class template) C++11
add_volatile 型をvolatile修飾する (class template) C++11
add_cv 型をconst-volatile修飾する (class template) C++11

参照の変更

名前 説明 対応バージョン
remove_reference 型から参照を除去する(class template) C++11
add_lvalue_reference 型に左辺値参照を追加する (class template) C++11
add_rvalue_reference 型に右辺値参照を追加する (class template) C++11

符号の変更

名前 説明 対応バージョン
make_signed 整数型を符号付きにする (class template) C++11
make_unsigned 整数型を符号なしにする (class template) C++11

配列の変更

名前 説明 対応バージョン
remove_extent 配列型から次元を除去する (class template) C++11
remove_all_extents 配列型から全ての次元を除去する (class template) C++11

ポインタの変更

名前 説明 対応バージョン
add_pointer 型にポインタを追加する (class template) C++11
remove_pointer 型からポインタを除去する (class template) C++11

その他の変換

名前 説明 対応バージョン
aligned_storage アライメント調整された領域を作る (class template) C++11
aligned_union アライメント調整された共用体領域を作る (class template) C++11
decay 配列と関数ポインタに関して、関数テンプレートと同様に推論された型を取得する (class template) C++11
enable_if コンパイル時条件式が真の場合のみ有効な型 (class template) C++11
conditional コンパイル時条件式 (class template) C++11
common_type 変換可能な共通の型を取得する (class template) C++11
underlying_type 列挙型の基底型を取得する (class template) C++11
result_of 関数の戻り値の型を取得する (class template) C++11

バージョン

言語

  • C++11

参照