将函数指针强制转换为C++中的函子

Casting function pointer to functor in C++

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

我有一个从另一个.hpp文件导入的函数指针类型。类似于:

typedef void (*PFN_func)(int i);

我想创建一个相同类型的函子:

std::function<PFN_func>

但这行不通。我不想要像这样的解决方案

std::function<void(int)>

因为mt函数指针定义要复杂得多

您可以这样做:

std::function<std::remove_pointer<PFN_func>::type>

void (*)(int)中删除指针会得到函数类型void(int)

对于一般可调用的情况,请参阅是否可以计算lambda的参数类型和返回类型?