【发布时间】:2018-10-28 10:46:11
【问题描述】:
我想键入一个指向模板函数的函数指针。
class A
{
template <typename T>
typedef void (*FPTR)<T>();
}
我尝试过这种方式,但没有成功。对这件事有什么想法吗?
【问题讨论】:
-
你能举例说明你想如何使用所说的 typedef 吗?
-
如果模板函数的参数类型和返回类型都不依赖于模板参数,那么您可以使用常规函数指针(
typedef void (*FPTR)();,甚至更好:using FPTR = void (*)();)。但该指针只能指向函数的特定实例化(例如FPTR ptr = foo<int>;)。不可能使函数指针指向函数模板本身,而不是 if 它的实例之一。 -
@HolyBlackCat 假设我写下了
using FPTR = void (*)();。我可以将我的 FPTR 引用到 foo 函数的任何初始化吗?假设我的函数对每种 int 类型都有不同的实现,比如foo<int8>() {...}foo<int16>() {...}foo<int32>() {...}。我可以将我的指针指向这些函数实现吗? -
如我所说,如果模板函数的参数类型和返回类型都不依赖于模板参数,那么您可以使用函数指针。从您的评论中不清楚是否是这种情况。
-
好的,谢谢。是的。没有返回类型或参数取决于模板参数。
标签: c++ c++11 templates function-pointers typedef