初始化表达式中使用的声明变量 - 含义?

发布于 2024-12-15 09:19:48 字数 530 浏览 4 评论 0原文

摘自这里的答案

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓝梦月影 2024-12-22 09:19:48

这是一个递归定义,与 这个示例非常相似与链接列表。构造了一条引用自身的语法规则。它之所以有效,是因为 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文