62

重複の可能性:
forward を使用する利点

完全転送とは何か説明してもらえますか?

4

2 に答える 2

57

http://www.justsoftwaresolutions.co.uk/cplusplus/rvalue_references_and_perfect_forwarding.html

なぜこれが便利なのですか?つまり、関数テンプレートは、std :: forwardを使用して、関数引数の左辺値/右辺値の性質を保持しながら、その引数を別の関数に渡すことができるということです。これは「完全転送」と呼ばれ、過度のコピーを回避し、テンプレート作成者が左辺値と右辺値の参照に対して複数のオーバーロードを作成する必要をなくします。

于 2011-07-26T11:25:04.657 に答える
12

引用セッションの発表:完璧な転送の冒険

転送の完全化は、右辺値参照の上に構築された重要なC++0x手法です。これにより、移動のソースと宛先が介在する関数呼び出しによって分離されている場合でも、移動セマンティクスを自動的に適用できます。一般的な例には、受け取った引数を初期化または設定しているクラスのデータメンバーに転送するコンストラクターとセッター関数、およびオブジェクトのクラスコンストラクターに引数を「完全に転送」するmake_sharedなどの標準ライブラリ関数が含まれます。作成されるshared_ptrはを指します。

于 2011-07-26T11:25:08.013 に答える