我有一个以这种方式定义的旧结构:

// file:MyStructure_def.h
STRUCT_BEGIN
STRUCT_FIELD(int,x)
STRUCT_END
// EOF

// file: MyStructure.h
#define STRUCT_BEGIN struct MyStructure{
#define STRUCT_FIELD(a,b) a b;
#define STRUCT_END };
#include "MyStructure_def.h"
// EOF


是否可以将这样生成的结构与BOOST_FUSION_ADAPT_STRUCT或任何其他宏一起使用boost :: fusion,而无需重新键入结构中的所有字段?

最佳答案

怎么样

#include <boost/fusion/adapted/struct.hpp>

BOOST_FUSION_ADAPT_STRUCT(MyStructure,a)


对于较旧的编译器/增强版本:

BOOST_FUSION_ADAPT_STRUCT(MyStructure,(a,b))


还要查看http://www.boost.org/doc/libs/1_60_0/libs/fusion/doc/html/fusion/adapted/define_struct.html,它将使您自己的宏变得多余。

#define NONS
BOOST_FUSION_DEFINE_STRUCT(
    (NONS), MyStructure,
    (a, b))


定义结构/以及/对其进行调整

关于c++ - 调整定义/包含生成的结构以 boost::: fusion,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35656480/

10-11 22:21