Please provide us with a minimal, self-contained piece of code we can compile. We have no crystal ball to see what you're doing...
Sorry, I was sure it's so basic, that there's even no need for real source-code.
Sure it is, but I wanted to see which placeholder do you use, and what includes you have.
Here it is:
#include <string> #include
#include #include namespace qi = boost::spirit::qi; namespace ascii = boost::spirit::ascii; namespace phoenix = boost::phoenix; int main() { using qi::int_; using qi::string; using qi::_1; using ascii::space; using phoenix::ref;
int i1; std::string s1; std::string source; std::string::iterator first = source.begin(), last = source.end(); // compiles well: qi::phrase_parse(first, last, ( int_[ref(i1) = _1] ) , space);
// doesn't compile: qi::phrase_parse(first, last, ( string[ref(s1) = _1] ) , space);
}
qi::string is not a valid parser primitive. What would you expect it to match anyway? You'll have to be a bit more specific about what kind of string you need to parse, for instance: '"' >> ~+char_('"') >> '"' (i.e. a quote followed by at least one character which is not a quote followed by a quote). Regards Hartmut --------------- Meet me at BoostCon www.boostcon.com