mpl::fold problems

Hello everybody! I'm a newbie in boost and I've got some problems with boost::mpl #include <boost/mpl/vector.hpp> #include <boost/mpl/fold.hpp> #include <boost/mpl/arithmetic.hpp> 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.

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.

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
participants (2)
-
sergey kostanbaev
-
Stefan Strasser