C++1zから、標準ライブラリの<type_traits>
に、integral_constant
の第1テンプレート引数をbool
にした別名のbool_constant
が追加されます。
それにともない、true_type
とfalse_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_type
とfalse_type
はよく使うので、それらを受け取るテンプレートで部分特殊化や関数テンプレートの推論をする場合にbool_constant
があると、integral_constant<bool, B>
のようなお決まりコードが短く済むようになります。
参照
お断り
この記事の内容は、C++1zが正式リリースされる際には変更される可能性があります。正式リリース後には、C++日本語リファレンスサイトcpprefjpの以下の階層の下に解説ページを用意する予定です。