C++ 可变模板类中的多重继承&;调用构造函数

C++ 可变模板类中的多重继承&;调用构造函数,c++,class,templates,variadic,C++,Class,Templates,Variadic,假设我有一个例子: //Two interfaces class InterfaceA { public: InterfaceA(int val); }; class InterfaceB { public: InterfaceB(int val); }; //Class with multiple inheritance template <typename... Intefaces> class Base : public Interfaces... { pu

假设我有一个例子:

//Two interfaces
class InterfaceA {
public:
    InterfaceA(int val);
};

class InterfaceB {
public:
    InterfaceB(int val);
};

//Class with multiple inheritance
template <typename... Intefaces>
class Base : public Interfaces... {
public:
    Base() : Interfaces(42) {}; // This is wrong
}
//两个接口
类接口a{
公众:
接口a(int-val);
};
类接口B{
公众:
接口b(int-val);
};
//具有多重继承的类
模板
类基:公共接口。。。{
公众:
Base():接口(42){};//这是错误的
}
如何用一个参数调用“接口”类的构造函数?

正确的语法是

Base() : Interfaces(42)... {}
这里的
Interfaces(42)…
是一个包扩展,模式为
Interfaces(42)
,这意味着它扩展到一个令牌列表,每个令牌对应于包中的每种类型,类似于用类型替换
Interfaces
的模式

有关更深入的说明,请参阅