我使用以下构造来创建类型的 mpl 向量。
struct Struct1{
typedef int type;
};
struct Struct2{
typedef float type;
};
template<typename T> struct TypeReader{
typedef typename T::type type;
};
int main()
{
typedef bm::vector<Struct1,Struct2> MPLVector;
typedef bm::transform<MPLVector, TypeReader<bm::_1>>::type TypeList;
static_assert(bm::equal<TypeList, bm::vector<int,float> >::value, "Is not same");
}
到目前为止,这按预期工作。现在我想做的是以下
struct Struct3{
typedef bm::vector<char,double> type;
};
typedef bm::vector<Struct1,Struct2,Struct3> MPLVector;
typedef bm::transform<MPLVector, TypeReader<bm::_1>>::type TypeList;
static_assert(bm::equal<TypeList, bm::vector<int,float,char,double> >::value, "Is not same");
这不起作用。那么我需要如何更改我的 MetaFunction 结构,它可以同时与 typedef 和 mpl::vector 一起使用?
或者,如果这不可能,如果我将所有类型 typedef 更改为 mpl 向量,是否可以这样做?