//
// 3.2.cpp
// c++1x tutorial
//
// created by changkun at changkun.de
//
// std::function std::bind
#include
#include
using foo = void(int); // å®ä¹å½æ°æé
void functional(foo f) {
f(1);
}
int foo2(int para) {
return para;
}
int foo3(int a, int b, int c) {
return 0;
}
int main() {
auto f = [](int value) {
std::cout << value << std::endl;
};
functional(f); // 彿°æéè°ç¨
f(1); // lambda 表达å¼è°ç¨
// std::function å
è£
äºä¸ä¸ªè¿åå¼ä¸º int, åæ°ä¸º int ç彿°
std::function func = foo2;
int important = 10;
std::function func2 = [&](int value) -> int {
return 1+value+important;
};
std::cout << func(10) << std::endl;
std::cout << func2(10) << std::endl;
// å°åæ°1,2ç»å®å°å½æ° foo ä¸ï¼ä½æ¯ä½¿ç¨ std::placeholders::_1 æ¥å¯¹ç¬¬ä¸ä¸ªåæ°è¿è¡å ä½
auto bindFoo = std::bind(foo3, std::placeholders::_1, 1,2);
// è¿æ¶è°ç¨ bindFoo æ¶ï¼åªéè¦æä¾ç¬¬ä¸ä¸ªåæ°å³å¯
bindFoo(1);
return 0;
}