Объявленная переменная используется в выражении инициализатора. - PullRequest
3 голосов
/ 11 ноября 2011

Взято из этого ответа здесь :

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

Обратите внимание, что объявлена ​​постоянная переменная имени node, но node используется для инициализации этой константы.

Что здесь происходит?

Полезные "Подобные вопросы" показывают , что он действителен в C ++ в целом, но что он делает в этом духовном выражении?

1 Ответ

4 голосов
/ 11 ноября 2011

Это рекурсивное определение, очень похожее на в этом примере со связанными списками .Построено грамматическое правило, которое ссылается на себя.Это работает, потому что operator* принимает аргумент по ссылке (const).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...