【发布时间】:2011-05-18 11:32:50
【问题描述】:
在对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 const 硬编码,如果可能的话,我想避免这种情况。
重要提示,我还从向量创建了一个boost::variant,我发现我可以通过执行运行时函数variant::which() 来获得序数。但是,这需要我创建一个具有默认初始化值的虚拟对象。这是相当难看的。如果您知道使用变体的其他方法,那也可以解决我的问题。
【问题讨论】:
标签: c++ algorithm containers boost-mpl template-meta-programming