Почему определение std ::function<> ::operator ()в стандарте C++:
R operator()(ArgTypes...) const;
а не
R operator()(ArgTypes&&...) const;
?
Можно подумать, что для правильной пересылки параметров нам нужен &&, а затем использовать std::forward<ArgTypes>...
в теле функции при переадресации вызова?
Я частично переопределил функцию std ::, чтобы проверить это, и обнаружил, что если я использую &&, я получаю «не могу связать 'xxx' lvalue с 'xxx&&'» из g++, когда позже пытаюсь передать параметры по значению оператору (). Я думал, что достаточно разобрался с концепциями rvalue/forwarding, но все же не могу понять этот момент. Что мне не хватает?