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?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage