??????. bind???????
???????????濴??lambda????????????????????Щ??????ν???????????????????????????????????lambda?????ν??????????????ú???????????????????????????????????????bind??????C++11 Feature????????????????functional???棩??
?????????????bind??????Щ??????????????????????ú??????????????????????????????????????????????????????????????????????????????
????1 bool findMin(const int &a?? const int &value)
????2 {
????3     return a >= value;
????4 }
????5 segFloorIndex = find_if(nums.begin()?? nums.end()?? bind(findMin?? _1?? floorSize));
????6 segCeilIndex = find_if(nums.begin()?? nums.end()?? bind(findMin?? _1?? ceilSize));
????????_1??????????_2??_3....???????????λ?????е?????????????????std??placeholders????????????????????????????????????????????????????_1??_2...?У?????????е??????G??????auto G= bind(f?? _2?? a?? _1 )??????G(x??y)???????f(Y??a??x )???????????????????λ?????
??????Щ????bind?????????????????????????????????????????????????ref???????????????????????????cref???????????????????????functional???????У???
??????. ????????????÷?????
????C++????????????????????????????????retType operator( )(parameter...){ }???????????????????????÷????????????????????????????????????????磺
????1 class FunctonalClass
????2 {
????3 public:
????4     bool operator()(const int &a?? const int &value)
????5     {
????6         return a >= value;
????7     }
????8 };
????????????????????????????д??????????????lambda??????????ú??????lambda??????????????????÷????????????????????????lamba?????????????飬??????3??lambda???????????????
????1 class AnonymityFunctional
????2 {
????3 public:
????4     AnonymityFunctional(const int &v) :value(v) { }
????5     bool operator()(const int &a) const { return a >= value; }
????6 private:
????7     const int &value;
????8 };
?????????????
????segFloorIndex = find_if(nums.begin()?? nums.end()?? AnonymityFunctional(floorSize));
????segCeilIndex = find_if(nums.begin()?? nums.end()?? AnonymityFunctional(ceilSize));
????lambda???????????????????????????????????????????????????????????????????????????????????????????
??????????????????????functional?????????????????????????????????????????????壬????greator<T>??
????????std::function????????????????
???????????5????????????????????????Щ??????????????????????????????????Щ??????????????????????Щ?????????????????????????????????????????????????????????function<T>??
?????????????????function????????
????std::function<bool(const int &)>
????????????????????緵?????bool???β??const int&????????????????lambda????????????????????
????1 bool fcn(const int &a){ return a; }
????2
????3 class FunctionTest
????4 {
????5 public:
????6     FunctionTest() = default;
????7
????8     bool getWhat(const int &a)const { return true; }
????9     bool getS()const { return true; }
????10 };
????11
????12 std::function<bool(const int &)> f1 = [](const int &a) { return a ; };
????13 std::function<bool(const int &)> f2 = Test();
????14 std::function<bool(const int &)> f3 = fcn;
??????????????Щ???????map???棬??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????function??
????1 bool fcn() { return true; }
????2 bool fcn(const int &a){ return a; }
????3
????4 bool(*pfcn)(const int &) = fcn;
????5 std::function<bool(const int &)> f3 = pfcn;
????????????????????????????????????
???????????????????????????????Qt????????????????????????д????????SIGNAL??SLOT??????????д???????????к???????????????????????????????????????????????????????????????????????????????????????????*.??????->*????????????????????????????????????????????????????????????????function????bind?????????????????
??????????????????????е???????????÷????????????????????????
????1 class FunctionTest
????2 {
????3 public:
????4     FunctionTest() = default;
????5
????6     bool getWhat(const int &a)const { return true; }
????7     bool getS()const { return true; }
????8 };
???????????????????????????????????????getWhat
????1 FunctionTest haha?? *phaha = &haha;
????2
????3 bool (FunctionTest::*pf)(const int &) const;//???????????
????4 pf = &FunctionTest::getWhat;//???????????????
????5
????6 auto ret = (haha.*pf)(floorSize);
????7 auto ret1 = (phaha->*pf)(ceilSize);
????*.??->*??????????????????*.?????????->*???????????????????????????????????????????????????????????????????????????
??????????????д???????????к??????????????????к???????????auto?????????~
????auto pf = &FunctionTest::getWhat;
???????????????????????fcuntion???????????????????????????????????
????std::function<bool(const FunctionTest *?? const int &)> f4(&FunctionTest::getWhat);
???????????????????????????????????????????????????????????????????????????????????????????——??????????????????????????????????????????????this???????????????????????????function????????????????????????????????find_if??
????????????????????????????????????function??????????????????????????mem_fn
????auto f = std::mem_fn(&FunctionTest::getWhat);
????????????????f??function???????????????f??????????find_if?????????????this???????getWhat????????ν???f4?????????