官术网_书友最值得收藏!

  • 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.

主站蜘蛛池模板: 横峰县| 克东县| 响水县| 遂宁市| 桃江县| 马公市| 九江市| 福清市| 合川市| 马关县| 石景山区| 凤台县| 同心县| 榆社县| 南川市| 四平市| 和平县| 华宁县| 仙居县| 蕲春县| 伊吾县| 监利县| 黄龙县| 泗水县| 合山市| 莎车县| 顺昌县| 神农架林区| 松原市| 新蔡县| 永仁县| 曲靖市| 永新县| 吴堡县| 阿图什市| 阜新| 磴口县| 宁波市| 新蔡县| 丰镇市| 图木舒克市|