読者です 読者をやめる 読者になる 読者になる

可変引数テンプレートでの型リスト - drop

C++

型リストから先頭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*>