drop_whileは先頭から述語を満たす型を除外するメタ関数です。
template <bool Cond, class Then, class Else> struct if_c; template <class Then, class Else> struct if_c<true, Then, Else> { typedef Then type; }; template <class Then, class Else> struct if_c<false, Then, Else> { typedef Else type; }; template <template <class T> class P, class Seq> struct drop_while; template <template <class T> class P, class Head, class... Tail> struct drop_while<P, tuple<Head, Tail...>> { typedef typename if_c<P<Head>::value, typename drop_while<P, tuple<Tail...>>::type, tuple<Head, Tail...> >::type type; }; template <template <class T> class P> struct drop_while<P, tuple<>> { typedef tuple<> type; };
drop_while<is_integral, tuple<int, long, char, double>>::type → tuple<double>