“Compiling templates requires assistance from the programming environment. The language defines two broad strategies for instantiating templates: the inclusion model and the separate compilation model. These models have impacts on how we build our systems in so far as they dictate whether template definitions go in header files or source files. At this time, all compilers implements the inclusion model, while only some implement the separate compilation model. Your compiler's user's guide should specify how your system manages templates.”
这是一段引自 C++ Primer 的话,编译模板需要编译器的支持,语言为模板实例化提供了两个策略:包含模型和分别编译模型。这些模型决定了模板定义应该是放在头文件还是源文件中。所有的编译器都实现了包含模型,而只有很少数的编译器实现分别编译模型。
所以,泛型函数的定义不是一定要写在头文件中,但如果你用 C++ 写泛型函数,请将函数定义写在头文件中。
以前用范型就注意到这个事情了,暂时记录一下,留待以后仔细研究。