C++14では、f<Arg>::type
のような型を返す型特性クラスに対して、f_t<Arg>
のように_t
をクラス名に付けて::type
を省略するエイリアステンプレート版が追加されました。
C++1zでは、f<Arg>::value
のような値を返す型特性クラスに対して、f_v<Arg>
のように_v
をクラス名に付けて::value
を省略する変数テンプレート版が追加されます。
t
はtype
、v
はvalue
を意味します。
#include <type_traits> int main() { // 値を返す型特性クラスの、通常の使い方 static_assert(std::is_void<void>::value); // 明示的に結果を取り出す static_assert(std::is_void<void>()()); // 関数呼び出し演算子 static_assert(std::is_void<void>()); // boolへの型変換演算子 // C++1zで追加される変数テンプレート版 static_assert(std::is_void_v<void>); }
変数テンプレートに対応する型特性クラスの一覧は、参照先の提案文書で確認してください。
参照
お断り
この記事の内容は、C++1zが正式リリースされる際には変更される可能性があります。正式リリース後には、C++日本語リファレンスサイトcpprefjpの以下の階層の下に解説ページを用意する予定です。