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.
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);
}