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

0 投票する
8 に答える
392801 参照

c++ - std :: move()とは何ですか?いつ使用する必要がありますか?

  1. それは何ですか?
  2. それは何をするためのものか?
  3. いつ使用する必要がありますか?

良いリンクをいただければ幸いです。

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

c++ - (std::move'ing によって) 右辺値参照を返す必要がありますか?

C++Next のブログ投稿では、次のように述べています。

アクセス可能なコピーまたは移動コンストラクターがある場合A、コンパイラーはコピーを除外することを選択できます。それ以外の場合A、移動コンストラクターがある場合は移動されvます。それ以外の場合A、コピー コンストラクターがある場合vはコピーされます。そうしないと、コンパイル時エラーが発生します。

std::move コンパイラはユーザーにとって最適な選択を見つけられるため、常に値を返さないようにする必要があると考えました。しかし、ブログ投稿の別の例では

関数内で左辺値として扱われるstd::move必要があるため、ここで必要です。y

ああ、このブログ投稿を読んだ後、私の頭はほとんど吹き飛ばされました。私はその理由を理解しようと最善を尽くしましたが、勉強すればするほど混乱していきました。を使用して値を返す必要があるのはなぜstd::moveですか?

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

c++ - コンストラクターを呼び出さずに配列を使用するc ++

私の仕事は、T (テンプレート) コンストラクターを呼び出さずにテンプレート型配列を作成することです。その後、std::move を使用して、ある値を別の配列からこの配列に移動したいと考えています。c++ でこれを行うにはどうすればよいですか? これが私のコードです:

しかし、それは仕事ではありません。コンパイラは次のように言います: 不完全な型 'void' へのポインターのサブスクリプト。

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

c++ - C++がunique_ptrを構造体メンバーに移動する

私は次のプログラムを持っています -

プログラムは「FooBar」を出力します。func() が戻ったときにプログラムが「Destroyed」を出力することを期待していますが、そうではありません。この場合、なぜそれが起こらないのか、誰かが私を助けることができますか?

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

c++ - C++: return ステートメントで明示的に std::move() を使用して移動を強制する必要がありますか?

編集:この質問はO0でのコンパイラの決定について尋ねるため、重複ではありません。

ここでは、Name Return Value Optimization (NRVO) は、多くのコンパイラがサポートする最適化であると言われています。しかし、それは必須の最適化ですか、それともあると便利な最適化ですか?

私の状況では、-O0デバッグの便宜上 (つまり、最適化なしで) コンパイルしたいのですが、オブジェクト (ベクトルなど) を返す return ステートメントに対しても NRVO を有効にしたいと考えています。-O0NRVO が必須でない場合、コンパイラはおそらくモードでそれを行いません。この場合、次のコードを優先する必要があります。

この下に?

編集: 私が使用しているコンパイラは GCC6 ですが、コードをコンパイラに依存しないようにしたいと考えています。