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

Instantiation

Since we may potentially have an infinite number of types and classes, the concept of function templates not only saves space in the source code file but also makes code easier to read and maintain. However, compared to writing separate functions or classes for the different data types that are used in our applications, it does not produce smaller object code. For instance, consider a program using a float and int version of app_max():

cout << app_max<int>(3,5) << endl;
cout << app_max<float>(3.0f,5.0f) << endl;

The compiler will generate two new functions in the object file, as follows:

int app_max<int> ( int a, int b) {
return (a>b?a:b);
}

float app_max<float> (float a, float b) {
return (a>b?a:b);
}

This process of creating a new definition of a function from a function template declaration is called template instantiation. During this instantiation process, the compiler determines the template arguments and generates actual functional code on demand for your application. Typically, there are three forms: explicit instantiations, implicit instantiations, and template deductions. In the next sections, let's discuss each form.

主站蜘蛛池模板: 临沂市| 靖江市| 布拖县| 兰考县| 凉城县| 余姚市| 海晏县| 黄梅县| 金乡县| 河西区| 温州市| 吉木萨尔县| 陇西县| 和静县| 望谟县| 张家界市| 康定县| 竹溪县| 旌德县| 弋阳县| 阳江市| 苗栗市| 辽阳县| 永吉县| 长垣县| 呈贡县| 文昌市| 天峻县| 阳信县| 宝应县| 麻栗坡县| 浏阳市| 阿尔山市| 仲巴县| 城口县| 大理市| 鱼台县| 乌什县| 渝中区| 马尔康县| 邳州市|