You know, we can wrap or store a lambda function to a 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;
}
My question is around std::function
, as you can see it is a template class but it can accept any kind of function signature.
For example float (float, float)
in this form return_value (first_arg, second_arg)
.
What's the structure of std::function
and how does it accept a function signature like x(y,z)
and how it works with it? Is float (float, float)
a new valid expression in C++?