N3545 An Incremental Improvement to integral_constant
C++14では、std::integral_constantクラスに、関数呼び出し演算子が追加されます。
この関数呼び出し演算子は、メンバ定数として持っているvalueを返すだけです。
// <type_traits> namespace std { template <class T, T v> struct integral_constant { static constexpr T value = v; using value_type = T; using type = integral_constant<T,v>; constexpr operator value_type() { return value; } constexpr value_type operator()() { return value; } // 追加 }; }
メタ関数の適用結果として::valueの代わりに関数呼び出し演算子を使用することで、コードが短くなります。
#include <type_traits> int main() { constexpr bool b = std::is_integral<int>{}(); static_assert(b, "b must be true"); }