可变构造函数继承

variadic constructor inheritance

template<typename Type, size_t Dimensions> 
struct Base 
{  
     template <typename ... Args>
    Base (const Args& ... args) : /*initialize*/ {}
/*
some functionality
*/
};

template<size_t Dimensions>
using myBase = typename Base<_DOUBLE,Dimensions> ;

template<size_t Dimensions> 
class Derived: public myBase<Dimensions> 
{
/*
some additional functionality
*/
}

myBase<2> mB(1.0,2.0); //works
Derived<2> D(1.0,2.0); //error C2661: 'Derived<2>::Derived': no overloaded function takes 2 arguments

为什么构造函数的隐式继承不起作用,如果有必要,在这种情况下如何创建正确的构造函数?

这里不需要typename:

using myBase = typename Base<_DOUBLE,Dimensions> ;

构造函数不会被继承,除非使用 using 关键字明确指定(参见 Inheriting constructors)。

template<size_t Dimensions> 
class Derived: public myBase<Dimensions> 
{
public:
    using myBase<Dimensions>::myBase;
};