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

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

主站蜘蛛池模板: 北京市| 望江县| 安多县| 洛阳市| 闽侯县| 莱西市| 色达县| 利辛县| 华宁县| 保康县| 花莲县| 洛扎县| 观塘区| 洛扎县| 宁晋县| 晋中市| 克拉玛依市| 河南省| 韶山市| 山西省| 罗城| 达尔| 贵南县| 凤山市| 四会市| 大安市| 霍邱县| 盐山县| 那曲县| 延寿县| 太仓市| 毕节市| 孝义市| 赤壁市| 商河县| 壶关县| 金平| 周至县| 炉霍县| 棋牌| 芜湖市|