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