【发布时间】:2016-02-25 04:05:23
【问题描述】:
想象以下场景:
typedef std::function<float(float)> A;
typedef float(*B)(float);
A foo();
void bar(B b);
您希望按照以下方式做某事:
bar(foo());
显然这不起作用。主要是因为A 可以包含一个状态,而B 是一个函数指针。如果我们知道A 不包含状态并且我们希望以某种方式获取它的“含义”并将其放入可以传递给B 的东西怎么办?
不可能吗?
【问题讨论】:
-
你知道所包含的 exact 类型吗?具有给定签名的 std 函数可以包含许多无状态类型。如果是这样,也许。不,不。顺便说一句,如果你知道 std 函数包含什么,为什么不直接传递 that 类型呢?
-
似乎
std::function::target可以返回指向该类型的指针,但前提是您知道该类型是什么。 en.cppreference.com/w/cpp/utility/functional/function/target -
foo()是float,不是函数指针。