C ++ 11 std :: function и совершенная пересылка

Почему определение std :: function & lt; & gt; :: operator () в стандарте C ++ таково:

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

и не

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

?

Можно подумать, что для правильной пересылки параметров нам нужен & amp; & amp; а затем использоватьstd::forward<ArgTypes>... в теле функции при переадресации вызова?

Я частично переопределил std :: function, чтобы проверить это, и обнаружил, что, если я использую & amp; & amp; & amp; & amp; lvalue к «xxx» и «amp;» из g ++, когда я пытаюсь позже передать параметры по значению в operator (). Я думал, что достаточно хорошо понял концепции rvalue / forwarding, но все же не могу уловить этот момент. Что мне не хватает?

Ответы на вопрос(1)

Ваш ответ на вопрос