假设我有下面的函数指针typedef:
using FType = int(*)(int,int);
如何使用FType的签名构造std::function对象?例如,如果使用using FType = int(int,int)定义FType,则可以使用std::funtion<FType> func = ...完成
FType
std::function
using FType = int(int,int)
std::funtion<FType> func = ...
ocebsuys1#
using FType = int(*)(int,int); std::function<std::remove_pointer_t<FType>> func;
v8wbuo2f2#
std::function可以执行CTAD,因此可以执行以下操作:
#include <iostream> #include <functional> using FType = int(*)(int,int); int foo(int,int) {} int main(){ FType x = &foo; auto f = std::function(x); }
2条答案
按热度按时间ocebsuys1#
v8wbuo2f2#
std::function
可以执行CTAD,因此可以执行以下操作: