eps
принимает ленивый аргумент, который оценивает bool.
Я использовал eps
с объектами pheonix, такими как eps(_r1 == 0) >> something
, и это сработало.
Однако, когдаЯ использую лямбда-функцию для более сложного выражения, которое не может быть выражено в форме 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 (спасибо Никите Князеву)
Я не вижу никаких ограничений для ленивых аргументов в духовной документации.
Как я могу использовать не-pheonixфункциональный объект?