模板extern(vs extern模板)

时间:2014-05-15 13:54:11

标签: c++ templates c++11

我遇到过这样的代码:

template<class T> extern void f(T a);
<。>在.h文件中,f()是用cpp文件中的几个特定T来定义的。

我无法找到有关此语法的任何解释。我已经看到extern模板是在c ++ 11中引入的,但它们似乎有不同的语法......

有人可以详细说明吗?

由于

1 个答案:

答案 0 :(得分:7)

extern在这里是多余的。这意味着从该模板实例化的函数具有外部链接。它是您应用于普通函数定义的正常extern,表示它具有外部链接。这也是多余的,因为默认情况下函数具有外部链接。所以它和

一样
template <class T> void f(T a);

您已经提到过.cpp文件中定义了几个明确的实例化(或者可能是专业化,您的问题不明确)。这仍与使用的extern关键字无关,也可以在没有关键字的情况下完成。