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

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.

主站蜘蛛池模板: 闸北区| 崇义县| 巫溪县| 恩平市| 蛟河市| 寻甸| 南岸区| 庐江县| 陕西省| 连江县| 错那县| 河南省| 宝坻区| 祁阳县| 德惠市| 利津县| 同仁县| 乌拉特中旗| 和顺县| 东兴市| 项城市| 麦盖提县| 长兴县| 徐汇区| 惠州市| 蓬溪县| 大厂| 镇安县| 延安市| 平安县| 延安市| 眉山市| 宁陵县| 天长市| 汾阳市| 武穴市| 望奎县| 天长市| 吉林省| 大城县| 德化县|