标签:amp 静态成员 函数对象 tput 种类 == cti 回调 erro
类模版std::function是一种通用、多态的函数封装。
可调用对象的包装器,它最重要的功能是实现延时调用。
std::function对象是对C++中现有的可调用实体的一种类型安全的封装。
1、绑定普通函数 void func(void) { std::cout << __FUNCTION__ << std::endl; } std::function<void(void)> fr1 = func; fr1();
2、绑定一个类的静态成员函数 class Foo { public: static int foo_func(int a) { std::cout << __FUNCTION__ << "(" << a << ") ->: "; return a; } }; std::function<int(int)> fr2 = Foo::foo_func; std::cout << fr2(123) << std::endl;
3、重载()函数 class Bar { public: int operator()(int a) { std::cout << __FUNCTION__ << "(" << a << ") ->: "; return a; } }; Bar bar; std::cout << bar(123) << std::endl;
4、回调函数 void call_when_even(int x, const std::function<void(int)>& f) { if (!(x & 1)) //x % 2 == 0 { f(x); } } void output(int x) { std::cout << x << " "; } call_when_even(i, output);
5、未绑定参数调用函数对象时,每个占位符 _N 被对应的第 N 个未绑定参数替换. //std::placeholders::_1 占位符 auto fr = std::bind(output, std::placeholders::_1, std::placeholders::_2); fr(1,2) std::bind(output, 1, 2)(); std::bind(output, std::placeholders::_1, 2)(1); std::bind(output, 2, std::placeholders::_1)(1); std::bind(output, 2, std::placeholders::_2)(1); //error:调用时没有第二个参数 std::bind(output, 2, std::placeholders::_2)(1, 2); //输出 2 2 调用时第一个参数被吞掉了 std::bind(output, std::placeholders::_1, std::placeholders::_2)(1, 2); //输出 1 2 std::bind(output, std::placeholders::_2, std::placeholders::_1)(1, 2); //输出 2 1
标签:amp 静态成员 函数对象 tput 种类 == cti 回调 erro
原文地址:https://www.cnblogs.com/osbreak/p/11087398.html