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 を渡したいなら型リストを使え.