mpl::vector
aを実行した後に a のオフセットを取得することは可能mpl::find<seq,type>
ですか?
別の言い方をすれば、次のコンパイル時間に相当するものを実行したいと考えています。
#include <vector>
#include <algorithm>
#include <iostream>
int main()
{
typedef std::vector<int> v_type;
v_type v_int(3);
v_int[0] = 1;
v_int[1] = 2;
v_int[2] = 3;
v_type::iterator it= std::find( v_int.begin() ,v_int.end(),3);
std::cout << it - v_int.begin() << std::endl;
}
これに失敗すると、私の型にmpl::vector
はtype_trait<T>::ordinal
const がハードコーディングされています。可能であればこれを避けたいと思います。
重要な注意、私はboost::variant
ベクトルからも作成しています。ランタイム関数を実行することで序数を取得できることがわかりますvariant::which()
。ただし、これには、デフォルトで初期化された値でダミー オブジェクトを作成する必要があります。これはかなり醜いです。バリアントでそれを行う他の方法を知っていれば、それも私の問題の解決策になります。