Thanks! It really helps!

On Mon, Aug 23, 2010 at 5:47 PM, Stefan Strasser <strasser@uni-bremen.de> wrote:
Zitat von sergey kostanbaev <sergey.kostanbaev@gmail.com>:

template <class T, unsigned space=1> struct tr_field2
{
  static const unsigned count = space;
}

typedef boost::mpl::vector4<
  tr_field2<int,  4>,
  tr_field2<int,  7>,
  tr_field2<char, 1>,
  tr_field2<char, 1>
Test_description;


I want to calculate a sum of all tr_field2::count
I've read in the docs mpl::fold is for the case.

I tried to compose

  typedef boost::mpl::fold<Test_description,
     boost::mpl::int_<0>,
     boost::mpl::plus<boost::mpl::_, boost::mpl::_::count > >
  >::type fcount;

but it won't compile. It seems I misundestood something.

template<typename T>
struct get_count{
   typedef mpl::int_<T::count> type;

};

typedef boost::mpl::fold<Test_description,
 boost::mpl::int_<0>,
 boost::mpl::plus<boost::mpl::_1, get_count<mpl::_2> >
::type fcount;

the placeholders are not evaluated by mpl::_::count.
and mpl::plus expects a mpl integral constant, not a value.




_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users