初始化表达式中使用的声明变量 - 意思是什么?

时间:2011-11-11 12:43:48

标签: c++ variables declaration definition boost-spirit

取自this answer here

static const qi::rule<std::string::iterator, ast_t()> node = 
'{' >> *node >> '}' | +~qi::char_("{}");

请注意,声明了名称node的常量变量,但node用于初始化此常量。

这里发生了什么?

有用的“类似问题”一般显示that it is valid in C++,但它在这种精神表达方面做了什么?

1 个答案:

答案 0 :(得分:4)

这是一个递归定义,与this example with linked lists非常相似。构造语法规则,引用自身。它起作用是因为operator*通过(const)引用获取其参数。