【发布时间】:2010-12-03 18:29:12
【问题描述】:
来自 google 的 v8 js 引擎的代码,allocation.h:
template <typename T>
static void DeleteArray(T* array) {
delete[] array;
}
这是一个函数模板(顶层,不在任何类中)。 但是 static 关键字是干什么用的呢?
【问题讨论】:
-
它与标头中的普通、非模板化
static函数执行相同的操作:stackoverflow.com/questions/780730/… -
因为它几乎肯定会成为一个内联函数,所以我会说'不是很多';)
-
static 在这种情况下已被弃用,取而代之的是匿名命名空间。
-
我个人认为这是一个错误(因为它在头文件中)。它可能应该被标记为
inline而不是static。在这种情况下,内联让编译器知道在不同的编译单元中有一个函数的多个版本,因此它应该在链接时选择一个(如果有些实际上没有被物理内联)。 -
@Martin:如果是模板,则不需要
inline。模板总是隐式内联的?