- 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.
推薦閱讀
- Effective C#:改善C#代碼的50個有效方法(原書第3版)
- Learning Flask Framework
- Python Network Programming Cookbook(Second Edition)
- 深度強化學習算法與實踐:基于PyTorch的實現
- 用Python實現深度學習框架
- 人人都懂設計模式:從生活中領悟設計模式(Python實現)
- Learning Zurb Foundation
- Linux Device Drivers Development
- Learning Apache Karaf
- 深入實踐Kotlin元編程
- Practical Microservices
- PHP+MySQL動態網站開發從入門到精通(視頻教學版)
- Practical GIS
- Python程序設計教程
- Practical Maya Programming with Python