型リストから先頭N個を除外するメタ関数です。
template <int N, class Seq> struct drop; template <int N, class Head, class... Tail> struct drop<N, tuple<Head, Tail...>> { typedef typename drop<N-1, tuple<Tail...>>::type type; }; template <class Head, class... Tail> struct drop<0, tuple<Head, Tail...>> { typedef tuple<Head, Tail...> type; };
drop<3, tuple<int, double, long, char, void*>>::type → tuple<char, void*>