要素のベクトルのタプルを格納する可変個引数テンプレート コンテナーを作成しようとしています。このコンテナーのポイントは、すべてのベクトルの要素がすべて関連していることです。後でその相関関係を維持したいのですが、計算には必要ありません。もしよろしければ、vector_3 と何らかのタイプの ref_id を想像してみてください。
コンテナーは、ベクトルを一緒に均一に変異させるだけです。したがって、私が理解している部分は次のようになります。
template<typename ...Elems>
class container
{
std::tuple<std::vector<Elems>...> data_;
public:
template<typename I>
const typename std::tuple_element<I, data_type>::type &nth_index() const
{ return std::get<I>(data_); }
};
私は挿入方法に苦労しています。私は次のようなことを考えていました:
void push_back(std::tuple<Elems...> &values)
{
std::tuple<std::back_insert_iterator<std::vector<Elems>>...> inserters;
}
しかし、この「挿入者」タプルを初期化する方法がわかりません。私はここでさまざまな再帰テンプレートの例をstackoverflowで見てきましたが、理解するのに十分な時間、頭の中にすべてを保持することはできません.
そのようなタプルがあれば、単純な割り当てを使用できると推測していました。
inserters = values;
また、値のタプルを返すすべての配列にまたがるアクセサーを書きたいと思います。
std::tuple<Elems &...> operator[](const size_t index)
{
...
}
しかし、繰り返しになりますが、このタプルを初期化する方法がわかりません。
これをやりたいと思ったのは私だけではなく、それを学ぶための良いリソースが見つかりません. それまでの間、0x の元の可変個引数テンプレートの提案を消化しようとしています。洞察をいただければ幸いです。私は MSVC 2012 の実装によって制限されています。