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

c++ - 移動された std::function に割り当てることは合法ですか

次のコードは合法ですか:

http://cpp.sh/2smb3期待どおりにコンパイルおよび実行されますが、 f が移動された後に f に割り当てると、未定義の動作が発生する可能性があることが懸念されます。

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

c++ - 文字列を割り当てながら右辺値参照を割り当てる

私は右辺値参照について学んでおり、私の脳はおそらくいたるところにあります。しかし、std::move と右辺値の参照をテストしたかったので、以下にコード スニペットを示します。

出力はどちらの場合も同じです。"こんにちは"

s2 を作成するときにブロック内で移動代入演算子を呼び出して、s1 が何も指していないことを確認することを望んでいましたが、それは起こりませんでした。

私の理論的根拠は、文字列がその中に char へのポインターを持っているため、移動ポインターが呼び出されると、メモリ割り当てが移動します。したがって、s1 から s2 に移動すると、s1 を印刷すると問題が発生するはずです。

私の理解で何が間違っていましたか。

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

c++ - push_back を使用するこのコードを std::move を使用するように変更する必要がありますか?

右辺値参照について読んだばかりで、以下は私が参照しているコードです

私の質問は、これまで、オブジェクト (または文字列) のベクトルを見たときはいつでも、ほとんどの場合、上記のように挿入が行われていることです。代わりに、v.push_back(std::move(s))重複したオブジェクトを不必要に作成することはありません。

これは、オブジェクトを STL に追加する正しい方法である必要があります。関心があるのはコンテナー内のデータだけであり、それ以外の場合は変数ではありません。

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

c++ - コードが右辺値と左辺値ではなく右辺値を 2 回出力するのはなぜですか?

そこで、2 つのコンストラクターを持つクラスをstd::forward作成して使用方法を練習したいと思いました。Test1 は withT&で、もう1 つはT&&as オーバーロードです。左辺値T&出力し、右辺値を出力するので、どのコンストラクターが使用されているかがわかります。スタック上にクラスの 2 つのインスタンスを作成しますが、驚いたことに、どちらもオーバーロードを使用しています。T&&T&&

元のstd::forward関数を使用して実装しようとしましたが、どちらも右辺値x2 を出力しました。私は何を間違っていますか?