C ++使用静态内联声明模板函数是否有意义?

时间:2011-07-06 14:39:30

标签: c++ templates inline standards

我们没有'extern模板','模板'功能总是'隐式内联'。这还有意义吗?

1 个答案:

答案 0 :(得分:5)

这对我没有意义。函数模板不是“隐式内联”。您必须明确声明它“内联”以使其内联。

这并不意味着对它的调用是否内联。这完全是编译器的决定。由于模板可以在多个翻译单元中定义(假设每个定义都为模板提供了相同的行为),将inline放在这样的模板上并没有太多影响,我可以看到。唯一的结果是告诉优化器你希望从我能看到的内联调用函数模板。

制作功能模板static是完全合理的。这使得您可以在多个翻译单元中定义模板,每个定义具有不同的行为。由于static模板将具有内部链接,这意味着它们是翻译单元的本地链接并且不会发生冲突。

static放在函数和函数模板上完全独立于将inline放在它们上面。 staticinline不依赖于C ++,如they are in C99