C ++ 11 std :: función y reenvío perfecto

Por qué la definición de std :: function <> :: operator () en el estándar de C ++ es:

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

y no

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

?

Uno podría pensar que para enviar correctamente los parámetros, necesitamos el && y luego usarstd::forward<ArgTypes>... en el cuerpo de la función al reenviar la llamada?

Reimplementé parcialmente la función std :: para probar esto y descubrí que si uso &&, obtengo "no puedo vincular el valor de 'xxx' a 'xxx &&'" de g ++ cuando intento más adelante pasar parámetros por valor al operador () . Pensé que entendía lo suficiente sobre los conceptos de rvalue / forwarding, pero todavía no puedo asimilar este punto. ¿Qué me estoy perdiendo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta