C ++ 11 std :: function i doskonałe przekazywanie

Dlaczego definicja std :: function <> :: operator () w standardzie C ++ to:

R operator()(ArgTypes...) const;

i nie

R operator()(ArgTypes&&...) const;

?

Można by pomyśleć, że aby poprawnie przesłać parametry, potrzebujemy &&, a następnie użyćstd::forward<ArgTypes>... w treści funkcji podczas przekazywania połączenia?

Częściowo ponownie zaimplementowałem std :: function, aby to przetestować i dowiedziałem się, że jeśli użyję &&, otrzymam "nie można powiązać 'xxx' lvalue z 'xxx &&'" z g ++, gdy później spróbuję przekazać parametry operatorowi () . Pomyślałem, że mam dość zrozumienia pojęć rvalue / forwarding, ale wciąż nie mogę tego zrozumieć. czego mi brakuje?

questionAnswers(1)

yourAnswerToTheQuestion