- Expert C++
- Vardan Grigoryan Shunguang Wu
- 244字
- 2021-06-24 16:34:07
Syntax
If a function or class template takes zero or more parameters, it can be defined as follows:
//a class template with zero or more type parameters
template <typename... Args> class X { ... };
//a function template with zero or more type parameters
template <typename... Args> void foo( function param list) { ...}
Here, <typename ... Args> declares a parameter pack. Note that here, Args is not a keyword; you can use any valid variable names. The preceding class/function template can take any number of typename as its arguments need to be instantiated, as shown here:
X<> x0; //with 0 template type argument
X<int, std::vector<int> > x1; //with 2 template type arguments
//with 4 template type arguments
X<int, std::vector<int>, std::map<std::string, std::vector<int>>> x2;
//with 2 template type arguments
foo<float, double>( function argument list );
//with 3 template type arguments
foo<float, double, std::vector<int>>( function argument list );
If a variadic template needs at least one type parameter, then the following definition is used:
template <typename A, typename... Rest> class Y { ... };
template <typename A, typename... Rest>
void goo( const int a, const float b) { ....};
Similarly, we can instantiate them by using the following code:
Y<int > y1;
Y<int, std::vector<int>, std::map<std::string, std::vector<int>>> y2;
goo<int, float>( const int a, const float b );
goo<int,float, double, std::vector<int>>( const int a, const float b );
In the preceding code, we created the y1 and y2 objects from the instantiations of the variadic class template, Y, with one and three template arguments, respectively. For the variadic function goo template, we instantiate it as two template functions with two and three template arguments, respectively.
- Dynamics 365 for Finance and Operations Development Cookbook(Fourth Edition)
- JBoss Weld CDI for Java Platform
- Java系統(tǒng)分析與架構(gòu)設(shè)計
- OpenCV實例精解
- Mastering Swift 2
- Python機(jī)器學(xué)習(xí)經(jīng)典實例
- 零基礎(chǔ)入門學(xué)習(xí)Python
- 代替VBA!用Python輕松實現(xiàn)Excel編程
- 寫給程序員的Python教程
- Xcode 6 Essentials
- 小程序從0到1:微信全棧工程師一本通
- 零基礎(chǔ)看圖學(xué)ScratchJr:少兒趣味編程(全彩大字版)
- Oracle 12c從入門到精通(視頻教學(xué)超值版)
- IPython Interactive Computing and Visualization Cookbook
- Manage Your SAP Projects with SAP Activate