编译器并不是把函数模板处理成能够处理任意类的函数;
编译器从函数模板通过具体类型产生不同 的函数;
编译器会对函数模板进行两次编译:
- 在声明的地方对模板代码本身进行编译
- 在调用的地方对参数替换后的代码进行编译。
函数模板要被实例化后才能成为真正的函数,在使用函数模板的源文件中包含函数模板的头文件,如果该头文件中只有声明,没有定义,那编译器无法实例化该模板,最终导致链接错误。
编译器并不是把函数模板处理成能够处理任意类的函数;
编译器从函数模板通过具体类型产生不同 的函数;
编译器会对函数模板进行两次编译:
函数模板要被实例化后才能成为真正的函数,在使用函数模板的源文件中包含函数模板的头文件,如果该头文件中只有声明,没有定义,那编译器无法实例化该模板,最终导致链接错误。