
David Greene <greened@obbligato.org> writes:
I'm trying something new using mpl's inherit_linearly but I can't figure out how to do what I want to do.
The idea, simply:
template<typename Policies> class Test : public inherit_linearly<Policies, inherit<_1, _2> >::type { public: void do_something(void) { for each Base in Policies Base::do_something(); rof } };
Is there a straightforward way to do this or am I thinking about this in the wrong way?
See mpl::for_each: template<typename Policies> class Test : public inherit_linearly<Policies, inherit<_1, _2> >::type { struct do_it { template <class B> void operator()(Test* self, B*) const { self->Base::do_something(); }; }; public: void do_something(void) { mpl::for_each< Policies , boost::add_pointer<mpl::_> >( boost::bind(do_it(), this, _1) ); } }; http://www.boost-consulting.com/mplbook covers this topic. -- Dave Abrahams Boost Consulting www.boost-consulting.com