C++1z bool_constant

C++1zから、標準ライブラリの<type_traits>に、integral_constantの第1テンプレート引数をboolにした別名のbool_constantが追加されます。

それにともない、true_typefalse_typeの定義が、integral_constantを使ったものからbool_constantを使ったものに変更されます。

namespace std {
    template <class T, T v> struct integral_constant;

    template <bool B>
    using bool_constant = integral_constant<bool, B>;

    typedef bool_constant<true> true_type;
    typedef bool_constant<false> false_type;
}

true_typefalse_typeはよく使うので、それらを受け取るテンプレートで部分特殊化や関数テンプレートの推論をする場合にbool_constantがあると、integral_constant<bool, B>のようなお決まりコードが短く済むようになります。

参照

お断り

この記事の内容は、C++1zが正式リリースされる際には変更される可能性があります。正式リリース後には、C++日本語リファレンスサイトcpprefjpの以下の階層の下に解説ページを用意する予定です。