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

型リストに型を追加するメタ関数です。

template <class T, class Seq>
struct cons;

template <class T, class... Seq>
struct cons<T, tuple<Seq...>> {
    typedef tuple<T, Seq...> type;
};
cons<int, tuple<double, long>>::type
→ tuple<int, double, long>