std::function
Файл заголовков: #include <functional>
std::function - полиморфная обертка функции, объекты этого класса могут ссылаться и вызывать произвольные вызываемые объекты (функции, лямбда-выражения)
Синтаксис:
std::function<тип_возврата(параметры)> имя;
Напишем простенькую функцию:
int Foo(int a, int b)
{
return a + b;
}
Объект std::function:
std::function<int (int, int)> f;
// аналогично с указателем на функцию
f = Foo;
f(2, 8);
Более того, можно создавать массив функций:
std::vector<std::function <int(int)>> fv = {Foo1, Foo2};
for (auto &i : fv)
{
std::cout << i(5) << "\n";
}