Вы знаете, мы можем обернуть или сохранить лямбда-функцию в std::function
:
#include <iostream>
#include <functional>
int main()
{
std::function<float (float, float)> add = [](float a, float b)
// ^^^^^^^^^^^^^^^^^^^^
{
return a + b;
};
std::cout << add(1, 2) << std::endl;
}
Мой вопрос вокруг std::function
, так как вы можете видеть, что это класс шаблона, но он может принимать любую подпись функции.
Например float (float, float)
в этом виде return_value (first_arg, second_arg)
.
Какова структура std::function
и как она принимает подпись функции, например x(y,z)
и как она работает с ней? Является ли float (float, float)
новое допустимое выражение в С++?