問題タブ [stdmove]
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++ - std :: move()とは何ですか?いつ使用する必要がありますか?
- それは何ですか?
- それは何をするためのものか?
- いつ使用する必要がありますか?
良いリンクをいただければ幸いです。
c++ - (std::move'ing によって) 右辺値参照を返す必要がありますか?
C++Next のブログ投稿では、次のように述べています。
アクセス可能なコピーまたは移動コンストラクターがある場合A
、コンパイラーはコピーを除外することを選択できます。それ以外の場合A
、移動コンストラクターがある場合は移動されv
ます。それ以外の場合A
、コピー コンストラクターがある場合v
はコピーされます。そうしないと、コンパイル時エラーが発生します。
std::move
コンパイラはユーザーにとって最適な選択を見つけられるため、常に値を返さないようにする必要があると考えました。しかし、ブログ投稿の別の例では
関数内で左辺値として扱われるstd::move
必要があるため、ここで必要です。y
ああ、このブログ投稿を読んだ後、私の頭はほとんど吹き飛ばされました。私はその理由を理解しようと最善を尽くしましたが、勉強すればするほど混乱していきました。を使用して値を返す必要があるのはなぜstd::move
ですか?
c++ - コンストラクターを呼び出さずに配列を使用するc ++
私の仕事は、T (テンプレート) コンストラクターを呼び出さずにテンプレート型配列を作成することです。その後、std::move を使用して、ある値を別の配列からこの配列に移動したいと考えています。c++ でこれを行うにはどうすればよいですか? これが私のコードです:
しかし、それは仕事ではありません。コンパイラは次のように言います: 不完全な型 'void' へのポインターのサブスクリプト。
c++ - C++がunique_ptrを構造体メンバーに移動する
私は次のプログラムを持っています -
プログラムは「FooBar」を出力します。func() が戻ったときにプログラムが「Destroyed」を出力することを期待していますが、そうではありません。この場合、なぜそれが起こらないのか、誰かが私を助けることができますか?
c++ - C++: return ステートメントで明示的に std::move() を使用して移動を強制する必要がありますか?
編集:この質問はO0でのコンパイラの決定について尋ねるため、重複ではありません。
ここでは、Name Return Value Optimization (NRVO) は、多くのコンパイラがサポートする最適化であると言われています。しかし、それは必須の最適化ですか、それともあると便利な最適化ですか?
私の状況では、-O0
デバッグの便宜上 (つまり、最適化なしで) コンパイルしたいのですが、オブジェクト (ベクトルなど) を返す return ステートメントに対しても NRVO を有効にしたいと考えています。-O0
NRVO が必須でない場合、コンパイラはおそらくモードでそれを行いません。この場合、次のコードを優先する必要があります。
この下に?
編集: 私が使用しているコンパイラは GCC6 ですが、コードをコンパイラに依存しないようにしたいと考えています。