問題タブ [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.

0 投票する
2 に答える
102 参照

c++ - コードを「転送参照可能」にする

参照の転送に関するこの投稿を開きました。これは (うまくいけば) MCVE コードです。

これはコード全体ではないため、回答に基づいてコードを追加する必要があるかもしれません。

とにかく、この回答で示唆されているように、このバージョンでは転送参照はできませArgsん。

だから私の質問は: このコードを「転送参照可能」にすることは可能ですか?

0 投票する
1 に答える
47 参照

c++11 - 転送参照が機能しないのはなぜですか?

このコードに問題があります:

この現在の例はコンパイルされずs、非 const に変更すると文字列が移動します。

私は正常に動作する同様のコードを持っていますが、この場合、私には見えない問題があります。

0 投票する
1 に答える
1169 参照

c++ - std::forward が static_cast を返す理由static_cast ではありません?

オーバーロードする Y という関数を用意しましょう:

それでは、std::forward のように機能するテンプレート関数を定義しましょう。

次に、main() を見てください。

予想通り、出力は

テンプレート関数に戻り、 にf()置き換えstatic_cast<T&&>(x)ますstatic_cast<T>(x)。出力を見てみましょう:

それは同じだ!なんで?それらが同じである場合、なぜからへstd::forward<>のキャストを返すのでしょうか?xT&&

0 投票する
1 に答える
619 参照

c++ - auto&& および const auto & を使用するための経験則

私は調査autoしましたが、初期化された値から型を推測することを知っています。の使用に関するガイドラインを作成しようとするとauto、以下のステートメントをルールとして記述できますか?

  1. auto &&変更可能なすべての値 (ユニバーサル参照であるため、r 値と l 値) に使用します。
  2. auto &&読み取り専用の値であっても、
  3. auto可能な限り使用してください (コーディング スタイルは個人の好みです)。

編集

したがって、上記の例auto &&では、3つの関数すべてに使用しました

  • getObj
  • getObjByRef
  • getObjConst

期待どおりに動作します。これで、次のように結論付けることができます。

  • auto &&任意の値を保持 (初期化) するために使用できます。OR
  • auto &&可能な限りあらゆる場所 を使用できます。

このアプローチの落とし穴はありますか?

0 投票する
1 に答える
4776 参照

c++ - const を追加するとユニバーサル参照が右辺値になる理由

左辺値または右辺値型参照パラメーターのいずれかに割り当てられた引数にもかかわらず、ユニバーサル参照と呼ばれる何かが間にあると言われているc++ 11および14に関するスコットの最後のマスターピースのユニバーサル参照について読んでいます。渡された引数の型特性に基づく l/rvalue のいずれか。const T&& pパラメータをユニバーサル参照にする理由は理解できましたが、型パラメータに const を追加すると p が右辺値になる理由がわかりません。

const参照パラメータに割り当てられた場合、これ以上のことを行います。