std::bind
std::bind可以将可调用对象和一组参数绑定,并且可以自定义参数绑定顺序,绑定后的结果可以直接作为可调用对象进行调用,也可以继续绑定到std::function
,作为回调函数使用。示例代码如下:
/**
* @file bind.cpp
* @brief
* @author DuYong
* @date 2021-08-05
*/
#include <iostream>
void foo(int param1, int param2, int param3, const int ¶m4, int param5) {
std::cout << param1 << ' ' << param2 << ' ' << param3 << ' ' << param4 << ' ' << param5 << std::endl;
return;
}
int goo(int param) {
return param; }
struct Foo {
void print_sum(int p1, int p2) {
std::cout << p1 + p2 << std::endl;
return;
}
int data{
10};
};
int main() {
using namespace std::placeholders; // 使用占位符
int n = 7;
auto f1 = std::bind(foo, _2, 42, _1, std::cref(n), n); // 参数重排序
n = 10;
f1(</