型リストの全ての型が述語を満たす場合はtrue
述語を満たさない型があった場合はfalseを返すメタ関数です。
template <template <class T> class P, class Seq> struct all; template <template <class T> class P, class Head, class... Tail> struct all<P, tuple<Head, Tail...>> { static const bool value = !P<Head>::value ? false : all<P, tuple<Tail...>>::value; }; template <template <class T> class P> struct all<P, tuple<>> { static const bool value = true; };
all<is_integral, tuple<int, long, char>>::value → true
all<is_integral, tuple<int, double, char>>::value → false