論理演算
あると便利だと思うのですが、C++0xにはありません。
#include <type_traits> // and template <class ...Fs> struct and_ : std::true_type {}; template <class F1, class ...Fs> struct and_<F1, Fs...> : std::conditional<F1::value, and_<Fs...>, std::false_type>::type {}; // or template <class ...Fs> struct or_ : std::false_type {}; template <class F1, class ...Fs> struct or_<F1, Fs...> : std::conditional<F1::value, std::true_type, or_<Fs...>>::type {}; // not template <class F> struct not_ : std::integral_constant<bool, !F::value> {};
短絡評価されるところがミソですね。