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);
}
如示例所示,您也不需要完全相同的签名,只要它们是兼容的(即,参数类型std::function可以传递给包含的函数/函子).
Ben*_*ley 16
std::function可以保存函数对象(包括lambdas),以及具有正确签名的函数指针.所以它更通用.
除了更清晰的外观和更具描述性的语法,std::function还可以存储任何可调用的对象:
更不用说将对象存储,复制和绑定到成员函数更容易,更直观.
| 归档时间: | 
 | 
| 查看次数: | 15935 次 | 
| 最近记录: |