为 Boost Fusion 适配一个空结构
Posted
技术标签:
【中文标题】为 Boost Fusion 适配一个空结构【英文标题】:Adapting an empty struct for Boost Fusion 【发布时间】:2013-09-16 15:17:09 【问题描述】:我有一个空结构:
struct MyStruct ;
我想调整它以供 Boost Fusion 使用。通常我会使用BOOST_FUSION_ADAPT_STRUCT
,但是这个宏需要两个参数来命名结构并列出它的字段。有没有办法告诉宏字段不存在?
动机:我正在使用 Boost Spirit 来定义解析器。该结构用于boost::variant
,然后将其传递给boost::apply_visitor()
。给定boost::fusion::for_each()
处理的变体中的其他一些项目。
【问题讨论】:
【参考方案1】:我尝试将 /**/
作为第二个参数传递并为我编译 (g++-4.6.2)。
BOOST_FUSION_ADAPT_STRUCT(MyStruct, /**/);
【讨论】:
Visual C++ v140 确实拒绝吃它。 @LoftyLion 不幸的是,我没有 MSVC 来测试这个,如果你提出一个新问题可能会更好。【参考方案2】:尝试传递BOOST_PP_EMPTY
。不能保证它会起作用,但考虑到实现它似乎很有可能。
【讨论】:
我收到一个错误'BOOST_PP_IIF_0' does not name a type
。不过还是谢谢你的建议。以上是关于为 Boost Fusion 适配一个空结构的主要内容,如果未能解决你的问题,请参考以下文章