Subject: Re: [proto] [phoenix] not playing nice with other libs
From: Thomas Heller (thom.heller_at_[hidden])
Date: 2011-05-04 08:02:20
On Wed, May 4, 2011 at 10:58 AM, Eric Niebler <eric_at_[hidden]> wrote:
> (cross-posting to the Proto list and cc'ing Hartmut.)
> On 5/2/2011 6:18 PM, Thomas Heller wrote:
>> On Mon, May 2, 2011 at 12:54 PM, Eric Niebler <eric.niebler_at_[hidden]> wrote:
>>> Phoenix is changing the following fundamental constants:
>>> Â BOOST_PROTO_MAX_ARITY
>>> Â BOOST_MPL_LIMIT_METAFUNCTION_ARITY
>>> Â BOOST_PROTO_MAX_LOGICAL_ARITY
>>> Â BOOST_RESULT_OF_NUM_ARGS
>>> IMO, Phoenix shouldn't be touching these. It should work as best it can
>>> with the default values. Users who are so inclined can change them.
>> This problem is well known. As of now I have no clue how to fix it properly.
>> Let me sketch why i changed these constants:
>> 1) Phoenix V2 has a composite limit of 10:
>> Â Â This is equivalent to the number of child expressions a expression can hold.
>> Â Â This is controlled by BOOST_PROTO_MAX_ARITY for the number of
>> Â Â template arguments for proto::expr and proto::basic_expr
>> 2) Boost.Bind can take up to 10 parameters in the call to boost::bind
> It's still not clear to me why you're changing
> BOOST_MPL_LIMIT_METAFUNCTION_ARITY and BOOST_PROTO_MAX_LOGICAL_ARITY.
./boost/proto/matches.hpp:56:8: error: #error
BOOST_MPL_LIMIT_METAFUNCTION_ARITY must be at least as large as
./boost/proto/proto_fwd.hpp:326: error: provided for âtemplate<class
G0, class G1, class G2, class G3, class G4, class G5, class G6, class
G7> struct boost::proto::and_â
But i guess this can be fixed by simply splitting the call to proto::and_ ....
Proto list run by eric at boostpro.com