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?