fileA.h
的文件,它声明了一个带有模板函数SomeFunc<T>()
的classA
类。这个函数在头文件中直接实现(对于模板函数来说通常是这样)。现在我在fileA.C
中添加了SomeFunc()
的专门实现(例如SomeFunc<int>()
),而不是在头文件中添加。如果我现在从一些其他代码中调用
SomeFunc<int>()
(可能也来自另一个库),它会调用通用版本还是专门版本?我现在遇到了这个问题,其中类和函数位于一个库中,该库由两个应用程序使用。一个应用程序正确使用了专门实现,而另一个应用程序使用了通用形式(这会在以后引起运行时问题)。为什么会出现这种差异?这可能与连接器选项等有关吗?这是在Linux上,使用的是g++ 4.1.2。