指向模板函数的指针

pointers to template functions

本文关键字:指针 函数      更新时间:2023-10-16

因此,我现在可以放心地将模板函数指针存储在映射容器中,主要是作为一种方法,对返回模板化对象的新实例的函数进行模板化,并将该函数指针存储到映射中,以便在给定相应的字符串索引时调用(这很麻烦)。我的问题在于使用模板函数指针。这似乎起作用的唯一原因是,返回类型和参数都不是template参数类型。它看起来像这样:

template<class T>
base * createT() {return new T;}

其中T应该是从基派生的类。现在我可以制作一个功能指针,它可以很好地进行

base*(*funcptr)() = &createT<derived>;

但假设我想设置这样的东西:

template <class returnType, class T>
returnType * createT() { return new T;}

对于这个函数,函数指针的声明会是什么样子?

不能有指向函数模板的指针,只能指向函数。因此,实际上模板化是无关紧要的;你会做一些类似的事情

A *(*funcptr)() = &createT<A,B>;

演示:http://ideone.com/NoHYS.

完全相同:

base *(*funcptr)() = &createT<base, derived>;