C++ 使用delcaration从变量模板arg给定的所有基类继承构造函数

C++ 使用delcaration从变量模板arg给定的所有基类继承构造函数,c++,constructor,variadic-templates,using,C++,Constructor,Variadic Templates,Using,如果我从一个或多个类派生,我可以使用声明继承构造函数 例如: struct A { A(int){} A(){} }; struct B { B(char){} B(){} }; struct All: public A,public B { using A::A; using B::B; }; 如果我想在模板类中执行相同的操作,其中基类由可变模板参数给出,那么如何使用using声明 示例(同上,但使用模板类继承) 模板 结构All2:公共P

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

例如:

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

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

struct All: public A,public B
{
    using A::A;
    using B::B;
};
如果我想在模板类中执行相同的操作,其中基类由可变模板参数给出,那么如何使用using声明

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

模板
结构All2:公共P。。。
{
使用P.::P.;?是否有语法可用于“使用”所有基类的构造函数?
};
主要的是:

int main()
{
    All all1(1);
    All2<A,B> all2(2);
}
intmain()
{
全部1(1);
全部2全部2(2);
}
模板
结构All2:公共P。。。
{
使用P::P。。。;
};

坏主意,因为:什么将构造从中继承的其他类?如果调用All的构造函数,那么什么将初始化All的B字节?最重要的是,如果A和B构造函数都使用相同的参数,你会怎么做?@Abel:这是一个纯粹的假设示例。我需要在不同的上下文中使用它,问题只是想知道我们需要哪种语法,完全独立于用例。哇!它需要GCC11来编译。我的系统带有10.3,但它不起作用。。。你知道这是否是一个固定的错误吗?它确实在g++10.3上失败:(但在4.0版的clang++上工作)它在我的PC上的gcc 10.3上失败,消息与godbolt相同。如果不是同样的错误,我想知道:-)
int main()
{
    All all1(1);
    All2<A,B> all2(2);
}
template < typename ... P>
struct All2: public P...
{
    using P::P...;
};