首页 > 解决方案 > 使用声明从可变参数模板 arg 给出的所有基类继承构造函数

问题描述

如果我从一个或多个类派生,我可以使用using声明继承构造函数。

例子:

struct A
{
    A(int){}
    A(){}
};

struct B
{
    B(char){}
    B(){}
};

struct All: public A,public B
{
    using A::A;
    using B::B;
};

如果我想在模板类中做同样的事情,其中​​基类由可变参数模板参数给出,我该如何使用 using 声明?

示例(同上,但使用模板类继承)

template < typename ... P>
struct All2: public P...
{
    using P...::P...; ??? is there a syntax available to "use" the constructors from all base classes?
};

主要可以是这样的:

int main()
{
    All all1(1);
    All2<A,B> all2(2);
}

标签: c++constructorvariadic-templatesusing

解决方案


template < typename ... P>
struct All2: public P...
{
    using P::P...;
};

推荐阅读