Wenn ein abgeleitetes Typ als r-Referenzwert vorbei erhalte ich universelle Funktionalität Referenz und kann perfekt Weiterleitung wie folgt archieve:Erfassung durch universelle Referenz
template <typename T>
void func(T&& t) {
other_func(std::forward<T>(t));
}
... aufgrund der Art und Weise T abgeleitet wird, und dem Standard des Regeln zum Kollabieren von Referenzen
Betrachten wir nun other_func ein Funktionsobjekt nimmt
template <typename T>
void func(T&& t) {
other_func([](int v) { return t + v; }); // I chose addition for example purposes
}
Jetzt offensichtlich wird dies aufgrund t nicht erfasst wird, nicht kompilieren. Meine Frage ist: Wie erfasse ich es, so dass der erfasste Wert ist, was auch immer T abgeleitet wird?
Ist dies mit den neuen generischen Lambda-Captures möglich? Und wenn ... wie?
[t = std::forward<T>(t)] ?
ich wirklich noch nicht, die Mechanik der neuen Capture initializers bekommen ...
Schnell Anmerkung: der derzeit anerkannten Name Bezug genommen wird Forwarding, nicht universelle Referenz –