- 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++
- 深入淺出Windows API程序設計:編程基礎篇
- 青少年Python編程入門
- Advanced Oracle PL/SQL Developer's Guide(Second Edition)
- UML 基礎與 Rose 建模案例(第3版)
- Clojure Reactive Programming
- Learning Unreal Engine Android Game Development
- JavaScript腳本特效編程給力起飛
- 深度學習原理與PyTorch實戰(第2版)
- Laravel Application Development Blueprints
- Learning iOS Security
- Oracle Data Guard 11gR2 Administration Beginner's Guide
- Java程序設計教程
- INSTANT EaselJS Starter
- Unity3D高級編程:主程手記