そこで、可変個引数テンプレートを使用して単純なタプル クラスを作成しました...
実用的なgetメソッド/ヘルパー関数を作成するにはどうすればよいですか? 私が使用している現在のものは、空のタプルで定義された get をコンパイラに期待させます。
コードは次のとおりです。
template<typename... T>
class tuple;
template< >
class tuple< > { };
template<typename U, typename... T>
class tuple<U, T...>
{
public:
tuple () {};
tuple (U f, T... r);
U get (int idx, int numCalls = 0) const;
U first_;
tuple<T...> rest_;
};
template<typename U, typename... T>
tuple<U, T...>::tuple (U f, T... r)
{
first_ = f;
rest_ = tuple<T...> (r...);
}
template<typename U, typename... T>
U tuple<U, T...>::get (int idx, int numCalls) const
{
if (idx == numCalls)
return first_;
return rest_.get (idx, numCalls + 1);
}
助けてくれてありがとう!