Wozu braucht man std::forward und welche Probleme löst es in C++?
Ich lerne C++11 und bin auf std::forward gestoßen. Ich habe die Dokumentation gelesen, verstehe aber nicht ganz, wozu es dient. Ich habe eine template-Funktion, die ein Argument per universal reference (T&&) annimmt und an eine andere Funktion übergibt:
```cpp
template
void wrapper(T&& arg) {
target(arg); // einfach weitergeben
}
```
Aber wenn ich ein rvalue übergebe (z.B. ein temporäres Objekt), erhält target es als lvalue, weil arg einen Namen hat. Dadurch wird kopiert statt verschoben. Ich habe gehört, dass std::forward dieses Problem löst, verstehe aber nicht wie. Können Sie anhand von Beispielen erklären, welche Probleme std::forward genau löst und wie man es richtig verwendet? Am besten mit Code, damit der Unterschied deutlich sichtbar ist. Danke!
<<>>
Was ist std::forward und wozu wird es benötigt
std::forward ist ein Werkzeug für perfect forwarding von Argumenten in template-Funktionen. Sein Hauptziel ist es, die "value category" (Wertkategorie) zu bewahren.
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen