首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Boost.Spirit使用的这个不寻常的C++模板功能的名称是什么?

Boost.Spirit使用的这个不寻常的C++模板功能的名称是什么?
EN

Stack Overflow用户
提问于 2016-08-31 08:12:28
回答 1查看 8.6K关注 0票数 51

下面的代码来自Boost.Spirit x3 documentation。它使用了一种有趣的C++语法,这是我以前从未见过的,如果不知道适当的术语,在搜索查询中几乎不可能描述这种语法。这是类的正向声明的简写吗?在C++标准中提到的这个特性在哪里?

代码语言:javascript
运行
复制
namespace parser
{
    using x3::eps;
    using x3::lit;
    using x3::_val;
    using x3::_attr;
    using ascii::char_;

    auto set_zero = [&](auto& ctx){ _val(ctx) = 0; };
    auto add1000 = [&](auto& ctx){ _val(ctx) += 1000; };
    auto add = [&](auto& ctx){ _val(ctx) += _attr(ctx); };

    // What is this? This is the very first use of the identifier `roman`.
    x3::rule<class roman, unsigned> const roman = "roman";
    //       ^^^^^^^^^^^

    auto const roman_def =
        eps                 [set_zero]
        >>
        (
            -(+lit('M')     [add1000])
            >>  -hundreds   [add]
            >>  -tens       [add]
            >>  -ones       [add]
        )
    ;

    BOOST_SPIRIT_DEFINE(roman);
}
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39238879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档