1. 包装指定调用标签(如 double(double) 返回值类型为 double,参数也是 double 类型)的函数;
  2. 替代以前的函数指针、函数对象和 lambda 表达式;
  3. 类模板 std::function 是一个通用的多态函数包装器。
  4. function 的实例可以存储、复制和调用任何 CopyConstructible Callable 目标:
    • 函数
    • lambda 表达式
    • std::bind 表达式
    • 函数对象
    • 指向成员函数的指针
    • 指向成员属性的指针
  5. 可以减少生成的模板函数实例化代码的数量,缩小可执行文件的大小;

参考:

std::function