初始化表达式中使用的声明变量 - 含义?
摘自这里的答案:
static const qi::rule<std::string::iterator, ast_t()> node =
'{' >> *node >> '}' | +~qi::char_("{}");
请注意声明了一个名为 node
的常量 var,但使用 node
来初始化该常量。
这是怎么回事?
有用的“类似问题”显示它在 C++ 中是有效的 一般来说,但是它在这个精神表达中起什么作用呢?
Taken from this answer here:
static const qi::rule<std::string::iterator, ast_t()> node =
'{' >> *node >> '}' | +~qi::char_("{}");
Note that a constant var of name node
is declared, but node
is used to initialize this constant.
What's going on here?
Helpful "Similar Questions" shows that it is valid in C++ in general, but what does it do in this spirit expression?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是一个递归定义,与 这个示例非常相似与链接列表。构造了一条引用自身的语法规则。它之所以有效,是因为
operator*
通过 (const
) 引用获取其参数。It's a recursive definition, very similar to this example with linked lists. A grammar rule is constructed which refers back to itself. It works because
operator*
takes its argument by (const
) reference.