2つの型リストを連結するメタ関数です。
template <class Seq1, class Seq2> struct concat; template <class... Seq1, class... Seq2> struct concat<tuple<Seq1...>, tuple<Seq2...>> { typedef tuple<Seq1..., Seq2...> type; };
concat<tuple<int, double>, tuple<long, char>>::type → tuple<int, double, long, char>