我们没有'extern模板','模板'功能总是'隐式内联'。这还有意义吗?
答案 0 :(得分:5)
这对我没有意义。函数模板不是“隐式内联”。您必须明确声明它“内联”以使其内联。
这并不意味着对它的调用是否内联。这完全是编译器的决定。由于模板可以在多个翻译单元中定义(假设每个定义都为模板提供了相同的行为),将inline
放在这样的模板上并没有太多影响,我可以看到。唯一的结果是告诉优化器你希望从我能看到的内联调用函数模板。
制作功能模板static
是完全合理的。这使得您可以在多个翻译单元中定义模板,每个定义具有不同的行为。由于static
模板将具有内部链接,这意味着它们是翻译单元的本地链接并且不会发生冲突。
将static
放在函数和函数模板上完全独立于将inline
放在它们上面。 static
和inline
不依赖于C ++,如they are in C99。