【问题标题】:Adapting an empty struct for Boost Fusion为 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() 处理的变体中的其他一些项目。

【问题讨论】:

    标签: c++ boost boost-fusion


    【解决方案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。不过还是谢谢你的建议。
    猜你喜欢
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 2020-08-26
    • 2014-06-11
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多