Ich bin mir nicht sicher, warum niemand sonst dies vorgeschlagen hat, aber Sie können eine Vorlage-Funktion schreiben, die Lambda-Funktionen zurückgibt. Das Folgende löste mein Problem, der Grund, warum ich auf diese Seite kam:
template <typename DATUM>
std::function<double(DATUM)> makeUnweighted() {
return [](DATUM datum){return 1.0;};
}
Wenn ich nun eine Funktion benötige, die einen bestimmten Typ von Argumenten annimmt (z. B. std::string
), sage ich einfach
auto f = makeUnweighted<std::string>()
und jetzt f("any string")
収益 1.0
.
Das ist ein Beispiel für das, was ich mit "Lambda-Vorlagenfunktion" meine. (Dieser spezielle Fall wird verwendet, um automatisch eine inerte Gewichtungsfunktion bereitzustellen, wenn jemand seine Daten nicht gewichten will, was auch immer seine Daten sein mögen).
0 Stimmen
Gibt es einen Anwendungsfall, bei dem eine Lambda-Vorlage nützlich wäre?
13 Stimmen
James: Sie könnten eine Funktion erstellen, die über ein Tupel iteriert (nicht unbedingt nützlich).
0 Stimmen
Ich kam auf die Idee, als ich ein Interview von Stroustrup las, in dem er über die Komplexität von Meta-Templates sprach, die ein Problem darstellt. Wenn es erlaubt wäre, stellte ich mir den Ninja-Code-Fu vor, der von allzu cleveren Programmierern erfunden werden könnte, die mit dieser Funktionskombination spielen...
2 Stimmen
Lustig, historische Meinungen von vor einem Jahrzehnt zu sehen.
0 Stimmen
In der Tat. Jetzt verstehe ich, wie nützlich das sein kann. Ich kann auch sehen, wie es missbraucht werden kann, aber das können alle nützlichen Werkzeuge :grimacing: