在声明全局模板函数的上下文中,“静态”是什么意思?

时间:2014-06-13 09:20:44

标签: c++ function templates

我知道 static 在声明全局非模板函数的上下文中意味着什么(参见例如What is a "static" function?),如果在包含的头文件中编写辅助函数,这将非常有用来自几个不同的位置,并希望避免“重复定义”错误。

所以我的问题是: static 在声明全局模板函数的上下文中意味着什么?请注意,我特别询问不属于某个类的全局非成员模板函数。

换句话说,以下两者之间有什么区别:

template <typename T>
void foo(T t)
{
    /* implementation of foo here */
}

template <typename T>
static void bar(T t)
{
    /* implementation of bar here */
}

1 个答案:

答案 0 :(得分:1)

请注意,模板功能实际上并没有被编译成&#39;除非需要该模板函数的实例。

然后,实例具有与非模板静态函数相同的属性: ie 从其对应的编译单元发出的实例对其他编译单元是不可见的,包括链接器。