std::enable_if template <bool B, class T = void> struct enable_if; enable_if は B が true の時に typedef T type; を持つ。B が false の時は type を持たない。T のデフォルトは void #include<type_traits> static_assert(std::is_same<std::enable_if<true>::type, void>::value, "::type"); static_assert(std::is_same<std::enable_if<true, int>::type, int>::value, "::type"); static_assert(std::is_same<std::enable_if<true, unsigned>::typ