C++ 指向多次实例化的函数模板的指针

C++ 指向多次实例化的函数模板的指针,c++,function,templates,C++,Function,Templates,我有一个关于函数模板的简单问题。假设我有一个标头,其中包含一个名为f的模板方法类: class test { public: template < class T > void f(T t) {} }; 类测试 { 公众: 模板void f(tt){ }; 如果这个头包含在几个.cpp文件中,并且每个.cpp调用f的类型都相同(比如int),那么我可以将函数的指针放在代码中的其他地方吗?考虑到潜在的几个定义,链接器只保留一个吗? < P> C++标准在第14/1节中提到,

我有一个关于函数模板的简单问题。假设我有一个标头,其中包含一个名为
f
的模板方法类:

class test
{
public:
   template < class T > void f(T t) {}
};
类测试
{
公众:
模板void f(tt){
};

如果这个头包含在几个.cpp文件中,并且每个.cpp调用
f
的类型都相同(比如int),那么我可以将函数的指针放在代码中的其他地方吗?考虑到潜在的几个定义,链接器只保留一个吗?

< P> C++标准在第14/1节中提到,

模板定义了一系列类或函数


它没有提到函数指针。因此,您试图做的是不可能的。

类似的问题,尽管它没有明确提到成员函数模板:我认为他字面上的意思不是“获取函数模板的地址”,而是特定实例化的地址……由于标准中省略了这种可能性,您无法做到这一点。很可能您可以让它为静态模板函数工作,但我怀疑它的可移植性。是的,我关心的是特定类型指令上的指针(因此在我的示例中,以函数f的指针为例)。我可以这样做吗?它是便携式的吗?谢谢“我能做吗?”可能吧。“它是便携式的吗?”。不。我认为这是由
[dcl.fct.spec]/4
保证的:“具有外部链接的内联函数在所有翻译单元中应具有相同的地址”