std::function<T1(T2)>
的优势是什么?超过原T1 (*)(T2)
?
最佳答案
std::function
可以容纳的不仅仅是函数指针,即functors。
#include <functional>
void foo(double){}
struct foo_functor{
void operator()(float) const{}
};
int main(){
std::function<void(int)> f1(foo), f2((foo_functor()));
f1(5);
f2(6);
}
Live example on Ideone.
如示例所示,您也不需要完全相同的签名,只要它们兼容(即 std::function
的参数类型可以传递给包含的函数/仿函数)。
https://stackoverflow.com/questions/11352936/