参考:https://en.cppreference.com/w/cpp/language/function_template
1、前言
前面我们介绍了函数模板的简单使用。
一个函数模板本身不是一个类型、函数或任何其他实体。仅包含模板定义的源文件不会生成任何代码。为了生成实际的函数(或从类模板生成类),必须实例化模板:确定模板参数,以便编译器可以生成代码。
在C++中,函数模板只是一个模板定义,它描述了生成函数的模式或蓝图。函数模板的目的是生成函数的特定版本,以适应不同的参数类型。即使定义了函数模板,没有使用该模板创建函数的实例,编译器也不会生成任何代码。
要使代码出现,必须对函数模板进行实例化。实例化函数模板意味着根据实际的模板参数将函数模板转换成实际的函数。这个过程通过通过提供参数来指定函数模板的模板参数值。
模板的实例化分为隐式实例化和显示实例化。
实例化过程中模板形参的推导又分为自动推导和显示指定。
首先准备一个函数模板:
template <class