Можно ли получить смещение mpl::vector
после выполнения на нем 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
, и я хотел бы избежать этого, если это возможно.
Важное примечание , я также создаю boost::variant
из вектора и вижу, что могу получить порядковый номер, выполнив функцию времени выполнения variant::which()
. Однако для этого необходимо создать фиктивный объект с инициализированными по умолчанию значениями. Это довольно некрасиво. Если вы знаете какой-то другой способ сделать это с вариантом, это также решило бы мою проблему.