問題タブ [forwarding-reference]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - コードを「転送参照可能」にする
参照の転送に関するこの投稿を開きました。これは (うまくいけば) MCVE コードです。
これはコード全体ではないため、回答に基づいてコードを追加する必要があるかもしれません。
とにかく、この回答で示唆されているように、このバージョンでは転送参照はできませArgs
ん。
だから私の質問は: このコードを「転送参照可能」にすることは可能ですか?
c++11 - 転送参照が機能しないのはなぜですか?
このコードに問題があります:
この現在の例はコンパイルされずs
、非 const に変更すると文字列が移動します。
私は正常に動作する同様のコードを持っていますが、この場合、私には見えない問題があります。
c++ - std::forward が static_cast を返す理由static_cast ではありません?
オーバーロードする Y という関数を用意しましょう:
それでは、std::forward のように機能するテンプレート関数を定義しましょう。
次に、main() を見てください。
予想通り、出力は
テンプレート関数に戻り、 にf()
置き換えstatic_cast<T&&>(x)
ますstatic_cast<T>(x)
。出力を見てみましょう:
それは同じだ!なんで?それらが同じである場合、なぜからへstd::forward<>
のキャストを返すのでしょうか?x
T&&
c++ - auto&& および const auto & を使用するための経験則
私は調査auto
しましたが、初期化された値から型を推測することを知っています。の使用に関するガイドラインを作成しようとするとauto
、以下のステートメントをルールとして記述できますか?
auto &&
変更可能なすべての値 (ユニバーサル参照であるため、r 値と l 値) に使用します。auto &&
読み取り専用の値であっても、auto
可能な限り使用してください (コーディング スタイルは個人の好みです)。
編集
したがって、上記の例auto &&
では、3つの関数すべてに使用しました
getObj
getObjByRef
getObjConst
期待どおりに動作します。これで、次のように結論付けることができます。
auto &&
任意の値を保持 (初期化) するために使用できます。ORauto &&
可能な限りあらゆる場所 を使用できます。
このアプローチの落とし穴はありますか?
c++ - const を追加するとユニバーサル参照が右辺値になる理由
左辺値または右辺値型参照パラメーターのいずれかに割り当てられた引数にもかかわらず、ユニバーサル参照と呼ばれる何かが間にあると言われているc++ 11および14に関するスコットの最後のマスターピースのユニバーサル参照について読んでいます。渡された引数の型特性に基づく l/rvalue のいずれか。const T&& p
パラメータをユニバーサル参照にする理由は理解できましたが、型パラメータに const を追加すると p が右辺値になる理由がわかりません。
const
参照パラメータに割り当てられた場合、これ以上のことを行います。