Mic*_*rst 40 c++ function-pointers c++11
std::function<T1(T2)>
比原版有T1 (*)(T2)
什么优势?
Xeo*_*Xeo 33
std::function
可以容纳多个函数指针,即仿函数.
#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);
}
Run Code Online (Sandbox Code Playgroud)
如示例所示,您也不需要完全相同的签名,只要它们是兼容的(即,参数类型std::function
可以传递给包含的函数/函子).
Ben*_*ley 16
std::function
可以保存函数对象(包括lambdas),以及具有正确签名的函数指针.所以它更通用.
除了更清晰的外观和更具描述性的语法,std::function
还可以存储任何可调用的对象:
更不用说将对象存储,复制和绑定到成员函数更容易,更直观.
归档时间: |
|
查看次数: |
15935 次 |
最近记录: |