我如何继承 mpl::vector 中的所有类型?

How can i inherit from all types in mpl::vector?

我使用 mpl::vector 来自 boost 1.58。我有类型:

typedef mpl::vector <base1, base2, base3> types;

如果我有一个 class derived,我如何从这个 mpl::vector 中的所有这些类型继承它?

您可以使用 inherit_linearly.

用法示例:

class A 
{
public:
   void a() {}
};
class B 
{
public:
   void b() {}
};
class C 
{
public:
   void c() {}
};

typedef boost::mpl::vector<A, B, C> types;


class Derived :
public boost::mpl::inherit_linearly<types, 
boost::mpl::inherit<boost::mpl::_1, boost::mpl::_2> >::type
{
};

int main()
{
   Derived d;
   d.a();
   d.b();
   d.c();
}