問題タブ [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.
c++11 - std::forward の構造
std::forward
私は本当に興味があります-明示的なテンプレートパラメーターが必要なのはなぜですか? 単純じゃないかな
可能であれば、単純化ではなく、関連するすべての詳細が本当に欲しいです。
c++ - 一部の人々が移動割り当てにスワップを使用するのはなぜですか?
たとえば、stdlibc++ には次のものがあります。
2 つの __u メンバーを *this に直接割り当てないのはなぜですか? スワップは __u に *this メンバーが割り当てられていることを意味しませんか?後で 0 と false を割り当てただけです...その場合、スワップは不要な作業を行っています。私は何が欠けていますか?(unique_lock::swap は、各メンバーで std::swap を実行するだけです)
c++ - C++0x でのコンストラクターのパラメーターの受け渡し/移動
n 個のパラメーターを持つコンストラクターがある場合、その引数は右辺値と左辺値にすることができます。可能な右辺値/左辺値の組み合わせごとに 2^n コンストラクターを記述せずに、右辺値の移動セマンティクスでこれをサポートすることは可能ですか?
c++ - ムーブ セマンティクス - それは一体何なのか?
重複の可能性:
移動のセマンティクスを説明してもらえますか?
誰かが私に良い情報源を指摘したり、移動のセマンティクスとは何かをここで説明したりできますか?
c++ - 移動可能でコピー不可能なクラスでmove-and-swapイディオムを使用することは理にかなっていますか
私のようなクラスがある場合
コピーコンストラクターがない場合は、operator = by valueとswapを実装するのは理にかなっていますか?クラスのオブジェクトのコピーを防ぐ必要Foo
がありますが、移動は許可します。
このクラスはコピーできないので、構成をコピーしたり、コピーして割り当てたりすることはできません。
編集
私はこれで私のコードをテストしました、そしてそれは私が望む振る舞いをしているようです。
c++ - 右辺値参照と完全転送
&& に関するいくつかの論文を読んだことがあります。
または「r」を渡すだけで十分ですか?
rvalue-reference - RValueリファレンスのタプル
次のコード
私は、中間スコープを離れると、ベクトルが破壊され、conatain内のタプルを破壊しようとすることを期待しています。これにより、Aのオブジェクトが破壊されますが、オブジェクトが破壊されていないことがわかります。Valgrindはメモリエラーも表示しません。以下は、valgrind $valgrind./a.outで実行した場合の出力です。
私は明らかにここで何かが欠けています。中間スコープでの「get()」の呼び出しが適切な値(100および200)を返す場合、ベクトルが破棄されている(およびタプルが破棄されている)ときに「A」のデストラクタが呼び出されないのはなぜですか?
[編集]@ハワード・ヒナント:ありがとう。それは完全に理にかなっています。私が理解していないのは次のとおりです。1)右辺値を使用してタプルを作成し、それをベクトルにプッシュすると、valgrindメモリエラーが発生します。たとえば。
最も内側のスコープに追加します:
上記の例の中間スコープでは、valgrindメモリエラーが発生しますが、上記の左辺値参照は生成されません。
2)次のステートメントがcopuコンストラクターと即時記述子を呼び出している理由を誰かが説明できますか?
c++ - 移動元のオブジェクトを破棄する必要がありますか?
a
から移動-構築する場合b
、それでも破壊する必要b
がありますか、それともそうせずに逃げることができますか?
optional<T>
この質問は、テンプレートの実装中に頭に浮かびました。抜粋:
もちろん、boolinitialized
を、初期化、非初期化、および移動元を区別する3値の列挙に置き換えることもできます。これが厳密に必要かどうかを知りたいだけです。
visual-studio-2010 - テンプレート型推定問題
クラスがありvariant
ます。コンストラクターのペアがあります。
このコードでこれらのコンストラクターを呼び出しました。
symbol_type
variant
この特定のコンストラクターの 2 番目の引数としてa を取り、v
暗黙的に変換されます。
ただし、MSVC は他のコンストラクターを使用する代わりに右辺値参照コンストラクターを使用しようとするためnew
、参照しようとするとコンパイル エラーが発生します。それはなぜですか、どうすればそれを止めることができますか?