【发布时间】:2011-03-30 08:40:25
【问题描述】:
我想使用 Boost 的any_range 来处理多个异构数据范围。我的数据范围的类型称为融合向量,例如:
typedef vector<double, int, char> TypeSequence
给定这样的类型,我想编写一个模板来派生出这样的进一步类型:
vector<AnyRange<double>::value, AnyRange<int>::value, AnyRange<char>::value>
其中AnyRange 定义为:
using namespace boost;
template <typename T>
struct AnyRange
{
typedef typename any_range<typename T, forward_pass_traversal_tag, int, std::ptrdiff_t> value;
};
我尝试过但失败了。这甚至可以通过 Fusion 实现吗? MPL?或者也许我用any_range 走错了路。
【问题讨论】:
-
这绝对是可能的——但是,看起来您更想将 MPL 向量(一个没有实际数据的向量)转换为一个融合向量(一个有数据的向量)。另外,您对“typename”的使用看起来有点不对...
标签: c++ templates boost boost-mpl boost-fusion