問題タブ [reference-wrapper]

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 投票する
4 に答える
4246 参照

c++ - なぜ std::reference_wrapper は一時的に受け入れませんか?

通常、右辺値は const 参照 ( ) にバインドできconst SomeType&ます。それは言語に組み込まれています。ただし、std::reference_wrapper<const T>対応するオーバーロードが意図的に削除されるため、右辺値をコンストラクター引数として受け入れません。この矛盾の理由は何ですか?std::reference_wrapper値で渡す必要があるが参照セマンティクスを保持したい場合の参照変数の代替として「宣伝」されています。

言い換えれば、const &バインディングへの右辺値が安全であると見なされる場合、それは言語に組み込まれているため、なぜ C++11 の設計者は右辺値を でラップすることを許可しなかったのstd::reference_wrapper<const T>でしょうか?

これがいつ便利になるか、あなたは尋ねるかもしれません。例えば:

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

c++ - Return value of non-initialized reference_wrapper

Where does reference_wrapper point to when I resize() the vector below? Is this an undefined behavior? What should I do for safety?

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

c++ - reference_wrappers のアドレスの比較

保持している参照によって2 つの を比較するにはどうすればよいstd::reference_wrapperですか? std::reference_wrapper2 つの s の参照が等しいかどうかを確認したい。

編集:混乱して申し訳ありません。参照対象のアドレスを取得して比較する方法を意味していました。

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

c++ - reference_wrapper はそれに応じてアドレスを変更しません

この質問は、この質問の延長ですpush_back()新しいメモリ割り当てが行われ、変更の最初の要素のアドレスが変更されるため、それに応じてそのアドレスを変更std::vector vすべきではないことを理解していstd::vector v2ますか?

出力:

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

c++ - reference_wrapper による const の正確性

さまざまな状況で、多くの関数で処理する必要があるオブジェクトのコレクション (ベクトルなど) があります。オブジェクトを変更する必要がある関数もあれば、そうでない関数もあります。オブジェクトのクラスは、抽象基本クラスから継承できます。したがって、私は次のようなものを持っています:

明らかに (?) とstd::reference_wrapper<A>の両方に s のprocess_1同じベクトルを渡すことはできませんprocess_2。これまでに検討したソリューションには次のものがあります。

  • C スタイルのキャストまたはreinterpret_castへの参照を使用するvec
  • T& get()andT const & get() constの代わりに独自の参照ラッパーを作成するT& get() const
  • ベクトルの代わりにラッパーを取るメソッドなどによるリファクタリング
  • ベクトルのコピーを含む、または含まないconst
  • constinreference_wrapperの引数を使用しない

これらはどれも非常にエレガントに見えません。他にできることはありますか?

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

c++ - Reference_wrapper: Push_back は機能しますが、割り当ては行われません

次のコードでは、push_back()astd::refへの a のstd::vector<reference_wrapper<Type>>割り当てはうまくいきますが、 astd::refへの a の割り当てはreference_wrapper<Type>機能しません。なんで?

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

c++ - 定数参照_ラッパー

次のコードでは、目的は、変更reference_wrapper<int> b時にa変更bも変更されるようにすることですが、その反対は許可されるべきではありaません。つまり、変更時にb変更されるべきではありません。行 7 と行 8 の 2 つの方法を試しました。行 7 では、行 8 が問題なくコンパイルされている間、コンパイラは からintに変換できないと不平を言いましたが、結果は私が望んでいたものではありませんでした (変更時に変更されました)。何か案が?const intab

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

c++ - 移転後の住所変更

以下のコードでは、新しいメンバーが に挿入されるたびに、std::vector<int>Aメモリの再割り当てが原因std::vector<reference_wrapper<int>>Bで間違ったアドレスを指します。参照ベクトルを作成して再割り当てを追跡し、常に正しいアドレスを格納することは可能ですか?