我遇到过这样的代码:
template<class T> extern void f(T a);
<。>在.h文件中,f()是用cpp文件中的几个特定T来定义的。
我无法找到有关此语法的任何解释。我已经看到extern模板是在c ++ 11中引入的,但它们似乎有不同的语法......
有人可以详细说明吗?
由于
答案 0 :(得分:7)
extern
在这里是多余的。这意味着从该模板实例化的函数具有外部链接。它是您应用于普通函数定义的正常extern
,表示它具有外部链接。这也是多余的,因为默认情况下函数具有外部链接。所以它和
template <class T> void f(T a);
您已经提到过.cpp
文件中定义了几个明确的实例化(或者可能是专业化,您的问题不明确)。这仍与使用的extern
关键字无关,也可以在没有关键字的情况下完成。