【发布时间】:2011-07-06 14:39:29
【问题描述】:
我们没有“外部模板”,“模板”函数始终是“隐式内联”。无论如何,这有意义吗?
【问题讨论】:
标签: c++ templates inline standards
我们没有“外部模板”,“模板”函数始终是“隐式内联”。无论如何,这有意义吗?
【问题讨论】:
标签: c++ templates inline standards
这对我来说没有意义。函数模板不是“隐式内联”。您必须明确声明它“内联”以使其内联。
这并不意味着对它的调用是内联的或不是内联的。这完全是编译器的决定。由于可以在多个翻译单元中定义模板(前提是每个定义都为模板提供相同的行为),所以在这样的模板上放置 inline 并没有太大的影响,据我所知。唯一的效果是告诉优化器你希望对函数模板的调用应该被内联,据我所知。
制作函数模板static 是完全明智的。这使得您可以在多个翻译单元中定义模板,每个定义都有不同的行为。由于static,模板将具有内部链接,这意味着它们位于其翻译单元的本地并且不会发生冲突。
不过,将static 放在函数和函数模板上完全独立于将inline 放在它们上面。 static 和 inline 不像 they are in C99 那样依赖于 C++。
【讨论】: