eps
接受一个计算布尔值的惰性参数。
我一直在使用eps
pheonix 对象eps(_r1 == 0) >> something
,它已经工作了。
但是,当我将 lambda 函数用于无法以 pheonix 形式表达的更复杂的表达式时,会引发静态断言并且无法编译。
auto test_lazy_arg_f = [](const auto&, const auto& context) {
return true;
}
boost::spirit::qi::eps(test_lazy_arg_f) >> whatever_i_need;
这无法编译并出现以下错误:
/usr/include/boost/spirit/home/qi/nonterminal/rule.hpp:177:13: error: static assertion failed: error_invalid_expression
BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Expr);
https://wandbox.org/permlink/eiM6zDfyzuapcQtB(感谢 Nikita Kniazev)
我没有看到精神文档中对惰性参数的任何限制。
如何使用非 pheonix 函数对象?