为模板类创建构造函数,该模板类在向量中调用模板初始化

Blu*_*Sun 1 c++ templates stdvector c++11

如果我想创建一个能够调用模板构造函数的模板类(在类构造函数中),这是否可以这样做?或者有更好的解决方案吗?

template<typename T>
class A{
public:
    A(int n): mVector(n) {}                //normal constructor
    A(int n, auto a): mVector(n, T(a)) {}  //constructor with template initialization
private:
    std::vector<T> mVector;
};
Run Code Online (Sandbox Code Playgroud)

还有一种方法可以为任意数量的参数T(a,b,c,...)扩展它,而不需要为每种情况都有构造函数吗?

Col*_*mbo 6

也许你正在寻找这个:

template <typename... Args>
A(int n, Args&&... args) : // First argument should probably be std::size_t
    mVector(n, T(std::forward<Args>(args)...)) {}
Run Code Online (Sandbox Code Playgroud)

但是,您可以选择const T&并期望呼叫者给您一个.