
On Sat, Feb 23, 2013 at 9:38 PM, Niitsuma Hirotaka < hirotaka.niitsuma@gmail.com> 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