由于Boost Spirit占位符限制而导致的编译错误不超过10

时间:2019-01-04 06:44:24

标签: boost-spirit

我得到

  

“ qi :: _ 10不是qi的成员”

为qi编译语法时出错。

有没有办法增加允许的最大值?

1 个答案:

答案 0 :(得分:0)

副手:避免大量函数参数的代码味道

那是

之前:

Live On Coliru

#define SPIRIT_ARGUMENTS_LIMIT 10
#include <boost/spirit/include/qi.hpp>

int main() {
    auto& _10 = boost::spirit::labels::_10;
}

之后:

Live On Coliru

#define SPIRIT_ARGUMENTS_LIMIT 11
#include <boost/spirit/include/qi.hpp>

int main() {
    auto& _10 = boost::spirit::labels::_10;
}

奖金

您可以欺骗和硬编码自己的占位符:

boost::phoenix::actor<boost::spirit::argument<998> > const _999;

请注意998_999之间的差异;这是一个未记录的实现细节,因此最好不要依赖它,或者至少要进行测试。