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

时间:2015-05-29 09:34:04

标签: c++ boost metaprogramming multiple-inheritance

我使用提升1.58 中的mpl::vector。我有类型:

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

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

1 个答案:

答案 0 :(得分:2)

您可以使用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();
}