
I am using Cygwin's g++ 3.4.4 and the official Cygwin Boost package version 1.33.1. This minimal programm using namespace boost::spirit; rule< > r; r = real_p; bool b = parse(inp.c_str(),r,space_p).full; produces the following error: g++ -c -o objs/src/Main.o -D__cygwin__ -O -Isrc -Ilibutil/include -Ilibrsrc/include src/Main.cpp /usr/include/boost/spirit/core/scanner/impl/skipper.ipp:173: instantiated from `boost::spirit::parse_info<const CharT*> boost::spirit::parse(const CharT*, const boost::spirit::parser<DerivedT>&, const boost::spirit::parser<SkipT>&) [with CharT = char, ParserT = boost::spirit::rule<boost::spirit::nil_t, boost::spirit::nil_t, boost::spirit::nil_t>, SkipT = boost::spirit::space_parser]' src/Main.cpp:16: instantiated from here /usr/include/boost/spirit/core/non_terminal/impl/rule.ipp:189: error: no matching function for call to `boost::spirit::impl::abstract_parser<boost::spirit::scanner<const char*, boost::spirit::scanner_policies<boost::spirit::iteration_policy, boost::spirit::match_policy, boost::spirit::action_policy> >, boost::spirit::nil_t>::do_parse_virtual(const boost::spirit::scanner<const char*, boost::spirit::scanner_policies_t>&)' Using the parser expression directly works without problems: bool b = parse(inp.c_str(),real_p,space_p).full; What am I doing wrong? Thanks, Patrick.