c ++:如何从struct成员创建可变参数序列

时间:2017-02-03 16:00:44

标签: c++11 templates

假设我有一个模板化的类,应该像这样调用:

struct mystruct
{
   int    member1;
   long   member2;
   string member3;
};

现在我想创建一个boost::mpl::vector,它将有效地包含结构中所有成员的类型(最好以相同的顺序):

using membervector1 = boost::mpl::vector<int, long, string>;

当然我希望语法与我的结构相关,如下所示:

using membervector2 = some_smart_template<mystruct>;
static_assert(std::is_same<membervector1, membervector2>::value);

1 个答案:

答案 0 :(得分:1)

C ++静态反射可以在C ++ 14中实现。

Magic get几乎可以做你想要的,除了它是元组,而不是mpl :: vector,但我认为从元组中获取mpl :: vector不是一个大问题。

请参阅presentation slides with explaination