可変引数テンプレートでの型リスト - init/last
id:DigitalGhostさん作。
initは型リストの前部(最後尾以外)を取り出すメタ関数です。
template <class Seq> struct init : public reverse<typename tail<typename reverse<Seq>::type>::type> {};
init<tuple<int, long, char>>::type → tuple<int, long>
lastは型リストの最後尾を取り出すメタ関数です。
template <class Seq> struct last : public head<typename reverse<Seq>::type> {};
last<tuple<int, long, char>>::type → char