编译器会对函数模板进行两次编译,在声明的地方对模板代码本身进行编译,在调用的地方对参数替换后 的代码进行编译。编译器根据函数的调用情况,产生具体的函数,这个具体的函数根据类型产生。模板的声明和实现不能分文件编写。