Изменения
→binding arguments of functions
http://www.dreamincode.net/forums/topic/264061-c11-fun-with-functions/ - четкая статья, обо всем написано
//осилили
Поправьте, если я не прав (вполне возможно)
Суть в том¸ что если у нас есть функция, а мы хотим, например(?), уменьшить количество ее аргументов, то мы можем их забиндить! Т.е. если у нас есть функция foo(double x, string y) {}, и мы сделаем std::function<int(std::string)> foo_str = std::bind(&foo, 5.0, std::placeholders::_1); то у нас появится новая функция foo_str с одним параметром стринг, второй параметр будет установлен как 5.0 (можно тутда записать переменную, тогда значение будет копироваться)
Анонимные функции
Это функции без имени, с которыми надо быть очень аккуратным. & по ссылке передает, = по значению
int arr[] = {1,2,3,4,5,6,7};
int sum = 0;
std::for_each(std::begin(arr), std::end(arr), [&sum] (int x) {sum += x;});
std::for_each(std::begin(arr), std::end(arr), [] (int x) {std::cout << x <<' ';});
=== зачем это надо ===
=== function objects ===