c ++:如何从struct成员创建可变参数序列(c++: how to create a variadic sequence from struct members)

编程入门 行业动态 更新时间:2024-10-27 02:30:51
c ++:如何从struct成员创建可变参数序列(c++: how to create a variadic sequence from struct members)

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

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

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

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

当然我想要根据我的结构模板化语法,如下所示:

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

Suppose I have a templated class that is supposed to be called like this:

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

Now I want to create a boost::mpl::vector that will effectively contain types of all the members in the struct (preferably in the same order):

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

Of course I want the syntax to templated with respect to my struct, like this:

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

最满意答案

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

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

请参阅演示幻灯片并进行解释 。

C++ static reflaction can be implemented in C++14 aready.

Magic get almost does what you want, except that it's tuple, not mpl::vector, but I think it is not a big issue to get mpl::vector from tuple.

See presentation slides with explaination.

更多推荐

本文发布于:2023-07-26 19:21:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1279868.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:序列   成员   参数   struct   members

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!