我正在尝试构建一个可以像数组一样访问的元组类。我可能会把事情变成 (void *) 但这会破坏模板的目的,因为我试图获得类型安全。
我正在使用 VS2010 pro 进行编译。我当前的非工作解决方案会产生以下错误。
错误:“项目 &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];
}
潜在的解决方案:(编辑)