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

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.

主站蜘蛛池模板: 札达县| 囊谦县| 太原市| 英德市| 观塘区| 太仓市| 谢通门县| 剑河县| 沂水县| 宝清县| 雅安市| 铜陵市| 哈密市| 禹城市| 读书| 红原县| 新巴尔虎右旗| 伊通| 三河市| 武穴市| 高碑店市| 蒙城县| 合川市| 和静县| 孟村| 镶黄旗| 泊头市| 朝阳县| 宁安市| 黄骅市| 海南省| 义马市| 安徽省| 根河市| 日喀则市| 寻乌县| 乌鲁木齐市| 北京市| 汝南县| 镇江市| 五家渠市|