$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] [spirit][phoenix] Spirit v2 conflicts with Phoenix v3
From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2012-07-19 12:31:24
On Thursday 19 July 2012 16:49:03 Thomas Heller wrote:
> 
> You should define BOOST_SPIRIT_USE_PHOENIX_V3 instead...
Sorry, I didn't go much further. Now it breaks in the following code:
    bool parse_counter_placeholder(path_string_type::const_iterator& it, 
path_string_type::const_iterator end, unsigned int& width)
    {
        return qi::parse
        (
            it, end,
            (
                qi::uint_[phoenix::ref(width) = qi::_1_type()]
            )
        );
    }
The error is:
In file included from ./boost/phoenix/core/actor.hpp:19:0,
                 from ./boost/phoenix/core.hpp:15,
                 from libs/log/src/text_file_backend.cpp:50:
./boost/phoenix/core/is_nullary.hpp: In instantiation of 
âboost::phoenix::result_of::is_nullary<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::assign, 
boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, 
boost::proto::argsns_::term<boost::reference_wrapper<unsigned int> >, 0l>, 
boost::phoenix::actor<boost::spirit::argument<0> > >, 2l>, void>â:
./boost/phoenix/core/detail/preprocessed/actor_result_of_10.hpp:38:13:   
instantiated from 
âboost::phoenix::result_of::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::assign, 
boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, 
boost::proto::argsns_::term<boost::reference_wrapper<unsigned int> >, 0l>, 
boost::phoenix::actor<boost::spirit::argument<0> > >, 2l>, void, void, void, 
void, void, void, void, void, void, void, void>â
./boost/phoenix/core/actor.hpp:240:9:   instantiated from 
âboost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::assign, 
boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, 
boost::proto::argsns_::term<boost::reference_wrapper<unsigned int> >, 0l>, 
boost::phoenix::actor<boost::spirit::argument<0> > >, 2l> >â
libs/log/src/text_file_backend.cpp:335:67:   instantiated from here
./boost/phoenix/core/is_nullary.hpp:115:16: error: base type 
âboost::phoenix::evaluator::impl<const 
boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::assign, 
boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, 
boost::proto::argsns_::term<boost::reference_wrapper<unsigned int> >, 0l>, 
boost::phoenix::actor<boost::spirit::argument<0> > >, 2l>&, 
boost::phoenix::vector2<mpl_::bool_<true>, boost::phoenix::is_nullary>, 
int>::result_type {aka const 
boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::assign, 
boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, 
boost::proto::argsns_::term<boost::reference_wrapper<unsigned int> >, 0l>, 
boost::phoenix::actor<boost::spirit::argument<0> > >, 2l>&}â fails to be a 
struct or class type
path_string_type is a flavour of std::basic_string. The code looks pretty much 
like what is in Boost.Spirit docs. Am I doing something wrong?