c++ std::function的使用

类模板 std::function 是一种通用的多态函数包装器。
std::function 可以存储、复制和调用任何 Callable 目标的实例、函数、lambda 表达式,绑定表达式或其他函数对象,以及指向成员函数和指向数据成员的指针。
所存储的可调用对象被称为目标的 std::function,不包含目标的 std::function 将其称为空,调用目标为空的 std::function,结果为 std :: bad_function_call 抛出异常。
 
一个例子说明 std::function 的使用:
#include <iostream>
#include <functional>

auto g_lambda = [](int a, int b) -> int { return a + b; };

int add(int a, int b) {
    return a + b;
}

class Add {
public:
    int operator () (int a, int b) {
        return a + b;
    }
};

int main()
{
    std::function<int(int, int)> func1 = add;
    int result1 = func1(1, 2);
    std::cout << "result1: " << result1 << std::endl;

    std::function<int(int, int)> func2 = g_lambda;
    int result2 = func2(1, 3);
    std::cout << "result2: " << result2 << std::endl;

    std::function<int(int, int)> func3 = Add();
    int result3 = func3(1, 4);
    std::cout << "result2: " << result3 << std::endl;

    return 0;
}
// 输出结果为:
// result1: 3
// result2: 4
// result2: 5

原文地址:https://www.cnblogs.com/tongyishu/p/13194348.html