C ++ 11 std :: function und perfekte Weiterleitung
Warum die Definition von std :: function <> :: operator () im C ++ - Standard lautet:
R operator()(ArgTypes...) const;
und nicht
R operator()(ArgTypes&&...) const;
?
Man könnte denken, dass wir zur korrekten Weiterleitung von Parametern das && benötigen und dann verwendenstd::forward<ArgTypes>...
im Funktionskörper beim Weiterleiten des Anrufs?
Ich habe die std :: -Funktion teilweise neu implementiert, um dies zu testen. Wenn ich das && verwende, erhalte ich "kann 'xxx' lWert nicht an 'xxx &&' binden" von g ++, wenn ich später versuche, Parameter als Wert an operator () zu übergeben. . Ich dachte, dass ich genug Verständnis für die Konzepte von rvalue / forwarding habe, aber ich kann diesen Punkt immer noch nicht verstehen. Was vermisse ich?