C ++ 11 std :: function e encaminhamento perfeito

Por definição de std :: function <> :: operator () no padrão C ++ é:

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

e não

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

?

Alguém poderia pensar que, para encaminhar corretamente os parâmetros, precisamos do && e, em seguida, usarstd::forward<ArgTypes>... no corpo da função ao encaminhar a chamada?

Eu parcialmente reimplementado std :: function para testar isso e descobri que se eu usar o &&, eu recebo "não pode vincular lvalue xxx 'para' xxx && '" de g + + quando eu tento mais tarde passar parâmetros por valor para operator () . Eu pensei que eu tinha noção suficiente dos conceitos de valor / encaminhamento, mas ainda não consigo entender esse ponto. o que estou perdendo?

questionAnswers(1)

yourAnswerToTheQuestion