Wiesz, możemy owinąć lub przechowywać funkcję lambda Do std::function
:Jak std :: funkcja działa
#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;
}
Moje pytanie jest wokół std::function
, jak widać jest to klasa szablon ale może zaakceptować każdy rodzaj sygnatury funkcji .
Na przykład float (float, float)
w tej formie return_value (first_arg, second_arg)
.
Jaka jest struktura std::function
i jak akceptuje ona sygnaturę funkcji, taką jak x(y,z)
i jak z nią działa? Czy float (float, float)
nowe prawidłowe wyrażenie w C++?
Wyszukaj typ wymazania w C++. –
Zawsze można otworzyć nagłówek kompilatora '' (uważam, że wszystkie główne kompilatory wysyłają std nagłówki jako kod C++) i sprawdzam je lub zajrzyj do [Boost.Function] (http://www.boost.org/doc /libs/1_53_0/doc/html/function.html). –
Angew
@Angew: Tak, bardzo edukacyjne, +1. Myślę, że 'std :: function' dotyka praktycznie każdego aspektu języka C++ ... –