
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.