-
函数模板》是不进行编译的,因为类型还不知道
-
模板的实例化》函数调用点进行实例化:在函数调用点,编译器用用户指定的类型,从原模板实例化一份函数代码出来
-
模板函数》才是要被编译器所编译的
-
模板类型参数 typename/class
-
模板非类型参数
-
模板的实参推演》可以根据用户传入的实参的类型,来推导出模板类型参数的具体类型:对于某些类型来说,依赖编译器默认实例化的模板函数,代码处理逻辑是有错误的)(编译器优先把compare处理成函数名字,没有的话,才去找模板函数)
-
模板的特例化(专用化)特殊(不是编译器提供的,而是用户提供的)的实例化
-
函数模板、模板的特例化、非模板函数的重载关系
注意:模板代码是不能在一个文件中定义,在另一个文件中使用的。模板代码调用之前,一定要看到模板定义的地方,这样的话,模板才能够进行正常的实例化,产生能够被编译器编译的代码。
所以,模板代码都是放在头文件当中的,然后在源文件当中直接进行#include包含
标签:函数,代码,C++,编译器,实例,类型,模板 From: https://www.cnblogs.com/espgod/p/17608830.html