tuple を可変長多重継承で実装

tuple を可変長多重継承で実装する方法,つまり

template<class... Args>
class tuple
  : private /*ここで Args を tuple_elem<0, Args0>, tuple_elem<1, Args1>, ... のような形で展開したい */
{
  // ...
};

上記に相当する実装方法がないか1週間ぐらい考えてたけれど,さっき思いついた.1週間思いつかなかったわりに方法は簡単だった.ただちゃんと説明するの('A`)マンドクセ

template<class T, class U>
class tuple_impl;

template<class... Index, class... Args>
class tuple_impl<mpl::vector<Index...>, mpl::vector<Args...>> // Index は integral_constant<std::size_t, 0>, ... な形とする
  : private tuple_elem<Index, Args>...
{
  // ...
};

要するに上のような感じでごにょごにょ……っていうかこれ脳みそこねこねコンパイルできるのか?
きょおおぼえたこと:2つ以上の argument pack を渡したいなら型リストを使え.