Skip to the content.

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";
}