Frage: Was ist die Bedeutung vom fehlendem -> bei Lambda-Funktionen?
Hallo an alle :)
Ich kenne folgende Varianten der Lambdafunktion:
Gibt ein int Wert an sum:
auto sum = [](int x, int y) -> int { return x + y; };
Gibt eine Funktion an sum zurück (man könnte jetzt sum(5)(2) oder auch (sum(5))(2) wenn ich richtig geklammert habe)
auto sum = [](int x) -> std::function<int(int)> { return [x](int y) { return x + y; }; };
Was aber bedeutet es, bzw. was bekommt man zurück wenn man sowas hat?
auto sum2 = [](int x, int y) { return x + y; };
Im Kontext konnte ich nur folgenden Kommentar finden: // Beachte. Inferenz von Rueckgabe Typ ist moeglich
und das man anscheinend folgendes aufrufen kann:
cout << sum2(5, 2) << endl;
cout << sum2(10, 5) << endl;
Geht das denn überhaupt?
Denn sum2 wäre nicht dem Muster entsprechend welches (wie ich dachte) einzuhalten ist:
[capture](paramters) -> return_type { function_body }