Boost logo

Boost Users :

Subject: Re: [Boost-users] [phoenix][phoenix3][MPL] incompatibility between MPL and Phoenix3
From: alfC (alfredo.correa_at_[hidden])
Date: 2010-11-28 16:07:55


On Nov 28, 4:12 am, Thomas Heller <thom.hel..._at_[hidden]> wrote:
> alfC <alfredo.correa <at> gmail.com> writes:> Hi,
>
> >  I decided to try Phoenix3. I looked up at a couple of examples and
> > since I use Boost.Units (which depends on Boost.MPL) heavily I tried
> > to mix both only to find out that there is an obscure incompatibility
> > between MPL and Phoenix3. The way to show this is just to compile the
> > phoenix3/.../function.cpp example
>
> https://svn.boost.org/svn/boost/sandbox/SOC/2010/phoenix3/libs/phoeni...
> unction.cpp
>
>
>
> > with the following added line:
>
> > #include<boost/mpl/multiplies.hpp>
>
> > I get this error message:
>
> > In file included from function.cpp:12:
> > /home/user/usr/include/boost/mpl/multiplies.hpp:38: error: wrong
> > number of template arguments (7, should be 5)
> > /home/user/usr/include/boost/mpl/aux_/preprocessed/gcc/times.hpp:68:
> > error: provided for ‘template<class N1, class N2, class N3, class N4,
> > class N5> struct boost::mpl::times’
>
> Thanks for the report. I just commited a fix.
> The problem is with some macro definitions inside phoenix/core/limits.hpp.
> It is the macro documented here:http://www.boost.org/doc/libs/1_45_0/libs/mpl/doc/refmanual/limit-met...
> arity.html
> However, this fix might introduce new problems, whenever the PHOENIX_LIMIT
> constant is set too high. The problem lies deep within the use of the
> preprocessor in some mpl internal code.
> Further investigation is needed!

Indeed, it seems that this workaround introduce new problems, for
example Boost.Accumulators
produce errors:

/home/user/usr/include/boost/accumulators/numeric/detail/
function_n.hpp:83: error: ‘apply10’ in namespace ‘boost::mpl’ does not
name a type

Thanks,
Alfredo


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net