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, но все же не могу уловить этот момент. Что мне не хватает?