問題タブ [rvalue-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 投票する
1 に答える
357 参照

c++11 - std::forward の構造

重複の可能性:
C++0x 右辺値参照の前方定義で ID を使用するのはなぜですか?

std::forward私は本当に興味があります-明示的なテンプレートパラメーターが必要なのはなぜですか? 単純じゃないかな

可能であれば、単純化ではなく、関連するすべての詳細が本当に欲しいです。

0 投票する
4 に答える
28669 参照

c++ - 一部の人々が移動割り当てにスワップを使用するのはなぜですか?

たとえば、stdlibc++ には次のものがあります。

2 つの __u メンバーを *this に直接割り当てないのはなぜですか? スワップは __u に *this メンバーが割り当てられていることを意味しませんか?後で 0 と false を割り当てただけです...その場合、スワップは不要な作業を行っています。私は何が欠けていますか?(unique_lock::swap は、各メンバーで std::swap を実行するだけです)

0 投票する
3 に答える
6066 参照

c++ - C++0x でのコンストラクターのパラメーターの受け渡し/移動

n 個のパラメーターを持つコンストラクターがある場合、その引数は右辺値と左辺値にすることができます。可能な右辺値/左辺値の組み合わせごとに 2^n コンストラクターを記述せずに、右辺値の移動セマンティクスでこれをサポートすることは可能ですか?

0 投票する
4 に答える
7166 参照

c++ - ムーブ セマンティクス - それは一体何なのか?

重複の可能性:
移動のセマンティクスを説明してもらえますか?

誰かが私に良い情報源を指摘したり、移動のセマンティクスとは何かをここで説明したりできますか?

0 投票する
3 に答える
2080 参照

c++ - 移動可能でコピー不可能なクラスでmove-and-swapイディオムを使用することは理にかなっていますか

私のようなクラスがある場合

コピーコンストラクターがない場合は、operator = by valueとswapを実装するのは理にかなっていますか?クラスのオブジェクトのコピーを防ぐ必要Fooがありますが、移動は許可します。

このクラスはコピーできないので、構成をコピーしたり、コピーして割り当てたりすることはできません。

編集

私はこれで私のコードをテストしました、そしてそれは私が望む振る舞いをしているようです。

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

c++ - 右辺値参照と完全転送

&& に関するいくつかの論文を読んだことがあります。

または「r」を渡すだけで十分ですか?

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

c++ - 名前付き右辺値参照のタイプは何ですか?

次のコードを検討してください。

それで、タイプはx何ですか?それはint&&またはint&

(この回答を読んだ後、私は自分自身にこの質問をしました。)

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

rvalue-reference - RValueリファレンスのタプル

次のコード

私は、中間スコープを離れると、ベクトルが破壊され、conatain内のタプルを破壊しようとすることを期待しています。これにより、Aのオブジェクトが破壊されますが、オブジェクトが破壊されていないことがわかります。Valgrindはメモリエラーも表示しません。以下は、valgrind $valgrind./a.outで実行した場合の出力です。

私は明らかにここで何かが欠けています。中間スコープでの「get()」の呼び出しが適切な値(100および200)を返す場合、ベクトルが破棄されている(およびタプルが破棄されている)ときに「A」のデストラクタが呼び出されないのはなぜですか?

[編集]@ハワード・ヒナント:ありがとう。それは完全に理にかなっています。私が理解していないのは次のとおりです。1)右辺値を使用してタプルを作成し、それをベクトルにプッシュすると、valgrindメモリエラーが発生します。たとえば。

最も内側のスコープに追加します:

上記の例の中間スコープでは、valgrindメモリエラーが発生しますが、上記の左辺値参照は生成されません。

2)次のステートメントがcopuコンストラクターと即時記述子を呼び出している理由を誰かが説明できますか?

0 投票する
3 に答える
1217 参照

c++ - 移動元のオブジェクトを破棄する必要がありますか?

aから移動-構築する場合b、それでも破壊する必要bがありますか、それともそうせずに逃げることができますか?

optional<T>この質問は、テンプレートの実装中に頭に浮かびました。抜粋:

もちろん、boolinitializedを、初期化、非初期化、および移動元を区別する3値の列挙に置き換えることもできます。これが厳密に必要かどうかを知りたいだけです。

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

visual-studio-2010 - テンプレート型推定問題

クラスがありvariantます。コンストラクターのペアがあります。

このコードでこれらのコンストラクターを呼び出しました。

symbol_typevariantこの特定のコンストラクターの 2 番目の引数としてa を取り、v暗黙的に変換されます。

ただし、MSVC は他のコンストラクターを使用する代わりに右辺値参照コンストラクターを使用しようとするためnew、参照しようとするとコンパイル エラーが発生します。それはなぜですか、どうすればそれを止めることができますか?