[英]Creating a constructor for a template class which calls the template initialization within a vector
如果我想創建一個能夠調用模板構造函數的模板類(在類構造函數內),這是這樣做的方法嗎? 還是有更好的解決方案?
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;
};
還有一種方法可以針對任意數量的參數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)...)) {}
但是,您可以只進行const T&
並期望呼叫者給您一個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.