C++ 標準の std::function<>::operator() の定義が次の理由:
R operator()(ArgTypes...) const;
ではない
R operator()(ArgTypes&&...) const;
?
パラメータを正しく転送するには、 && が必要でありstd::forward<ArgTypes>...
、呼び出しを転送するときに関数本体で使用すると思いますか?
これをテストするために std::function を部分的に再実装しましたが、&& を使用すると、後でパラメーターを値で operator() に渡そうとすると、g++ から「'xxx' 左辺値を 'xxx&&' にバインドできません」というメッセージが表示されることがわかりました。 . 右辺値/転送の概念については十分に理解できたと思いますが、まだこの点を理解できていません。私は何が欠けていますか?