
Thanks for the quick reply. This looks very interesting. But the following snippets bombs on my machine using VS2005. #include <boost\algorithm\string.hpp> #include <boost\spirit\include\qi.hpp> namespace qi = boost::spirit::qi; namespace ascii = boost::spirit::qi::ascii; int _tmain(int argc, _TCHAR* argv[]) { std::string number( "123" ); int i; qi::parse( number.begin() , number.end() , qi::int_ , ascii::blank , i ); return 0; } My compiler states: 1>c:\boost\boost\fusion\container\vector\detail\vector_n.hpp(57) : error C2166: l-value specifies const object 1> c:\boost\boost\fusion\container\vector\detail\vector_n.hpp(56) : while compiling class template member function 'boost::fusion::vector_data2<Derived,T0,T1> &boost::fusion::vector_data2<Derived,T0,T1>::operator =(const boost::fusion::vector_data2<Derived,T0,T1> &)' 1> with 1> [ 1> Derived=boost::fusion::vector2<const boost::proto::exprns_::expr<boost::proto::tag::terminal,boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank,boost::spirit::char_encoding::ascii>>,0> &,int &>, 1> T0=const boost::proto::exprns_::expr<boost::proto::tag::terminal,boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank,boost::spirit::char_encoding::ascii>>,0> &, 1> T1=int & 1> ] 1> c:\boost\boost\fusion\container\vector\detail\vector_n.hpp(79) : see reference to class template instantiation 'boost::fusion::vector_data2<Derived,T0,T1>' being compiled 1> with 1> [ 1> Derived=boost::fusion::vector2<const boost::proto::exprns_::expr<boost::proto::tag::terminal,boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank,boost::spirit::char_encoding::ascii>>,0> &,int &>, 1> T0=const boost::proto::exprns_::expr<boost::proto::tag::terminal,boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank,boost::spirit::char_encoding::ascii>>,0> &, 1> T1=int & 1> ] [snip] Thanks again for your quick reply. Christian