Обертка std::function в C++
Шаблон std::function хранит любой вызываемый объект с заданным типом результата и списком аргументов.
Достаточно указать сигнатуру в угловых скобках,
например std::function<int(int)> для
функции от одного int. В переменную
можно записать адрес свободной функции.
Подключим <functional> и выведем
результат:
#include <functional>
#include <iostream>
int bump(int value) {
return value + 1;
}
int main() {
std::function<int(int)> fn = bump;
std::cout << fn(4) << "\n";
return 0;
}
Реализуйте int square(int). Запишите
ее в std::function<int(int)>
с именем work и выведите результат
для 5.
Объявите void note(int), печатающую
аргумент. Обертка std::function<void(int)>
должна сначала держать bump из
примера, затем note; выведите
два вызова подряд для 0.