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,...)扩展它,而不需要为每种情况都有构造函数吗?
也许你正在寻找这个:
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&并期望呼叫者给您一个.