Boost logo

Proto :

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.
>>
>> Eric,
>> 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_MPL_LIMIT_METAFUNCTION_ARITY:
./boost/proto/matches.hpp:56:8: error: #error
BOOST_MPL_LIMIT_METAFUNCTION_ARITY must be at least as large as
BOOST_PROTO_MAX_ARITY

and
BOOST_PROTO_MAX_LOGICAL_ARITY:
./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