Boost logo

Boost Users :

Subject: Re: [Boost-users] nest mpl::lambda
From: Jeffrey Lee Hellrung, Jr. (jeffrey.hellrung_at_[hidden])
Date: 2013-02-24 19:52:15


On Sat, Feb 23, 2013 at 9:38 PM, Niitsuma Hirotaka <
hirotaka.niitsuma_at_[hidden]> wrote:

> > Also: remove the ::type from the fold<> expression. Works for me after
> that
> > (and the fix with adding the ::type on the definition of my_max). I would
> > think you would've gotten a compiler error at this point but, meh.
>
> Thank you for your advice.
> However with gcc 4.6.3, that cause compiler error.
>

Sorry, I think I inadvertently fixed a 3rd error in your original post
(accessing ::type on the mpl::max invocation) when I copied your code. The
following works for me on MSVC9:

--------
#include <boost/mpl/assert.hpp>
#include <boost/mpl/fold.hpp>
#include <boost/mpl/front.hpp>
#include <boost/mpl/integral_c.hpp>
#include <boost/mpl/lambda.hpp>
#include <boost/mpl/max.hpp>
#include <boost/mpl/placeholders.hpp>
#include <boost/mpl/vector_c.hpp>
#include <boost/type_traits/is_same.hpp>

namespace mpl = boost::mpl;

typedef mpl::lambda<
  mpl::max< mpl::_1, mpl::_2 > >::type my_max;
typedef mpl::fold<
  mpl::vector_c<int,1,7,0,-2,5,-1>
, mpl::int_<6>
, my_max
>::type r2;
BOOST_MPL_ASSERT(( boost::is_same< r2, mpl::integral_c<int, 7> > ));

typedef mpl::lambda<
  mpl::fold<
    mpl::_1
  , mpl::front< mpl::_1 >
  , my_max
>
>::type my_max_types;

typedef my_max_types::apply<
  mpl::vector_c<int,1,7,0,-2,5,-1> >::type r3;
BOOST_MPL_ASSERT(( boost::is_same< r3, mpl::integral_c<int, 7> > ));
--------

If you can't figure out the reasons your original posting didn't work and
you want to know, holler back.

- Jeff



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