假设我有一个语法定义为:
some_rule := a b [c [d]]
其中c
, 和d
是可选的,如果没有给出,则默认为某个值(比如说 14)。如果没有给出值,我可以让它默认为 14 吗?我希望生产std::vector
的始终是 4 号。
我最接近的是如下:
qi::rule<Iterator, std::vector<int>(), ascii::space_type> some_rule;
some_rule %= int_ >> int_ >> -int_ >> -int_;
// ...
some_other_rule = some_rule[&some_callback_for_int_vectors];
对于未显示的可选值(我相信),它将为 0。然后我将末尾的连续 0 更改为 14。这不仅非常错误,而且也不优雅。有一个更好的方法吗?