Sie wissen, können wir eine Lambda-Funktion wickeln oder speichern std::function
:Wie std :: Funktion arbeitet
#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;
}
Meine Frage ist, um std::function
, wie Sie es ist eine Template-Klasse sehen, aber es kann annehmen jede Art von Funktion Signatur.
Zum Beispiel float (float, float)
in dieser Form return_value (first_arg, second_arg)
.
Was ist die Struktur von std::function
und wie akzeptiert es eine Funktion Signatur wie x(y,z)
und wie es damit funktioniert? Ist float (float, float)
ein neuer gültiger Ausdruck in C++?
Nachschlagen Typ löschen in C++. –
Sie können immer den '' Header Ihres Compilers öffnen (ich glaube, dass alle großen Compiler Standard-Header als C++ - Code versenden) und überprüfen, oder sehen Sie sich [Boost.Function] (http://www.boost.org/doc /libs/1_53_0/doc/html/function.html). –
Angew
@Angew: Ja, sehr lehrreich, +1. Ich denke, 'std :: function' berührt fast jeden Aspekt der C++ Sprache ... –