配列のようにアクセスできる Tuple クラスを構築しようとしています。おそらく (void *) に変換することもできますが、型の安全性を確保しようとしているため、テンプレートの目的が無効になります。
VS2010 pro を使用してコンパイルしています。私の現在の機能していないソリューションでは、次のエラーが発生します。
エラー: 'Item &MyList::operator ': 'N' のテンプレート引数を推測できませんでした。
#include <tuple>
#include <stdio.h>
template <int size, typename Ty0,
typename Ty1=std::tr1::_Nil, typename Ty2=std::tr1::_Nil, typename Ty3=std::tr1::_Nil,
typename Ty4=std::tr1::_Nil, typename Ty5=std::tr1::_Nil, typename Ty6=std::tr1::_Nil,
typename Ty7=std::tr1::_Nil, typename Ty8=std::tr1::_Nil, typename Ty9=std::tr1::_Nil>
struct MyList {
std::tuple<Ty0, Ty1, Ty2, Ty3, Ty4, Ty5, Ty6, Ty7, Ty8, Ty9> items;
template <int N, typename Ty>
Ty &operator[](int N) {
auto &var = std::get<N>(items);
return var;
}
};
void main() {
MyList<2, int, double> list;
auto var = list[0];
}
潜在的な解決策: (編集)