Я не смог получить ваш пример для компиляции. Помимо using
правильных типов из ...::qi
, вы добавили ()
к типу trait::space
.
Это работает без проблем для меня (boost 1.44)
#include <boost/spirit/include/qi.hpp>
#include <string>
#include <vector>
#include <cassert>
using boost::spirit::qi::phrase_parse;
typedef boost::spirit::qi::rule < std::string::const_iterator, boost::spirit::qi::space_type > rule_type;
int main() {
std::list < rule_type > ruleList;
std::string const s("abcdef");
std::string::const_iterator iter = s.begin(), end = s.end();
ruleList.push_back(*boost::spirit::qi::char_);
assert(phrase_parse(iter, s.end(), ruleList.back(), boost::spirit::qi::space));
assert(iter == s.end());
}
~>g++ test.cpp && ./a.out<br>
~>
обратите внимание, я использую qi::space_type
и `qi::space
вместо пространства имен ascii
. Я понятия не имею, что / где находится пространство имен trait
.