- Expert C++
- Vardan Grigoryan Shunguang Wu
- 103字
- 2021-06-24 16:34:06
Implicit instantiations
When a function is called, the definition of that function needs to exist. If this function has not been explicitly instantiated, an implicit instantiation approach is reached, in which the list of template arguments need to be either explicitly supplied or deduced from the context. Part A of the following program provides some examples of the implicit instantiation of app_max() in this catalog:
//ch4_2_func_template_implicit_inst.cpp
#include <iostream>
template <class T>
T app_max (T a, T b) { return (a>b?a:b); }
using namespace std;
int main(){
//Part A: implicit instantiation in an explicit way
cout << app_max<int>(5, 8) << endl; //line A
cout << app_max<float>(5.0, 8.0) << endl; //line B
cout << app_max<int>(5.0, 8) << endl; //Line C
cout << app_max<double>(5.0, 8) << endl; //Line D
//Part B: implicit instantiation in an argument deduction way
cout << app_max(5, 8) << endl; //line E
cout << app_max(5.0f, 8.0f) << endl; //line F
//Part C: implicit instantiation in a confuse way
//cout<<app_max(5, 8.0)<<endl; //line G
return 0;
}
The implicit instantiations of lines A, B, C, and D are int app_max<int>(int,int), float app_max<float>(float, float>), int app_max<int>(int,int), and double app_max<double>(double, double), respectively.
推薦閱讀
- Advanced Quantitative Finance with C++
- Microsoft Application Virtualization Cookbook
- MariaDB High Performance
- Mastering Julia
- SEO實戰密碼
- 差分進化算法及其高維多目標優化應用
- Hands-On Microservices with Kotlin
- jQuery Mobile移動應用開發實戰(第3版)
- OpenMP核心技術指南
- ActionScript 3.0從入門到精通(視頻實戰版)
- ASP.NET求職寶典
- DevOps 精要:業務視角
- Python趣味創意編程
- Mastering ArcGIS Server Development with JavaScript
- 算法訓練營:海量圖解+競賽刷題(入門篇)