我遇到过这样的代码:
template<class T> extern void f(T a);在.h文件中,f()是用cpp文件中的几个特定的T定义的。
我找不到关于这个语法的任何解释。我看到extern模板是在c++11中引入的,但是它们似乎有不同的语法.
有人能详细说明吗?
谢谢
发布于 2014-05-15 14:04:43
extern在这里是多余的。这意味着从该模板实例化的函数具有外部链接。这是普通的extern,您可以应用到一个普通的函数定义来表示它有外部链接。这也是多余的,因为函数在默认情况下具有外部链接。所以这和
template <class T> void f(T a);您已经提到在.cpp文件中定义了几个显式实例化(或者可能是专门化,您的问题不清楚)。这仍然与正在使用的extern关键字无关,也可以不使用它来完成。
https://stackoverflow.com/questions/23680342
复制相似问题