私は、より大きなプロジェクトでテンプレートのインスタンスを一般化するために取り組んでおり、C++ 03でBoost MPLを使っていくつかのインデックスをきれいに線形化するのに苦労しています。私の問題を例で表示するのが最も簡単です(貧弱な擬似コードを許してください)。Boost MPLを使用してインデックスを線形化する
私は任意の長さのN個のベクトルを持っています。 Nが3であると言う、彼らはのように見えると言う:私は全体的に、これらを変換したい
vectorOfIndices = {0,4,1};
:のように、それらのそれぞれについて
v0 = {1,2,3};
v1 = {4,5,6,7,8};
v2 = {9,10};
、私はインデックスは別のベクトルに格納されています
0*sizeof(v1)*sizeof(v2) + 4*sizeof(v2) + 1;
を私が定義する助けを探していたメタ関数/クラスは、両方のタイプのMPLの2つのテンプレートパラメータに取るべき本を一般化したものです::ベクトル(MPLを含む:: INT_エントリを:実行して、インデックス)。最初のベクトルはインデックスのシーケンス(上記のvectorOfIndicesで長さはN)を含み、2番目のベクトルは長さのリスト(上記のv0、v1、v2 ... vNの長さ)のリストを含みます。結果の型は、全体のインデックスを含むmpl :: int_でなければなりません。