ошибка компиляции при попытке разобрать в utree

Я пытаюсь разобрать строку в utree, используя следующий код:

void Parse(const std::string& testString, const MyGrammar<const char*>& parser)
{
char const* first = testString.c_str();
char const* last = &first[testString.size()];
boost::spirit::utree tree;
boost::spirit::qi::parse(first,last,parser,tree);
std::cout << "tree: " << tree << '\n';
}

где MyGrammar

namespace spirit  = boost::spirit;

class MyGrammar : public spirit::qi::grammar<Iterator, spirit::utree(), spirit::qi::space_type>
{
...
}

Но это не скомпилируется со следующим сообщением:

Ошибка 1 ошибка C2664: «bool boost :: function4 :: operator () (T0, T1, T2, T3) const»: невозможно преобразовать параметр 4 из «const boost :: spirit :: unused_type» в «const boost :: spirit» :: qi :: char_class ‘c: \ program files \ etas \ etasadlib \ boost \ 1.49.0 \ include \ boost \ spirit \ home \ qi \ nonterminal \ rule.hpp 303 MyGrammarTest

Кто-нибудь может мне помочь?

1

Решение

Я нашел следующий пост от sehe: boost :: qi :: parse, кажется, вызывает ошибки компиляции который отвечает на этот вопрос: мне нужно использовать фразу_парс со шкипером

boost::spirit::qi::phrase_parse(first,last,parser, boost::spirit::qi::space,tree);
1

Другие решения

Других решений пока нет …