問題タブ [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::function に割り当てることは合法ですか
次のコードは合法ですか:
http://cpp.sh/2smb3期待どおりにコンパイルおよび実行されますが、 f が移動された後に f に割り当てると、未定義の動作が発生する可能性があることが懸念されます。
c++ - 文字列を割り当てながら右辺値参照を割り当てる
私は右辺値参照について学んでおり、私の脳はおそらくいたるところにあります。しかし、std::move と右辺値の参照をテストしたかったので、以下にコード スニペットを示します。
出力はどちらの場合も同じです。"こんにちは"
s2 を作成するときにブロック内で移動代入演算子を呼び出して、s1 が何も指していないことを確認することを望んでいましたが、それは起こりませんでした。
私の理論的根拠は、文字列がその中に char へのポインターを持っているため、移動ポインターが呼び出されると、メモリ割り当てが移動します。したがって、s1 から s2 に移動すると、s1 を印刷すると問題が発生するはずです。
私の理解で何が間違っていましたか。
c++ - push_back を使用するこのコードを std::move を使用するように変更する必要がありますか?
右辺値参照について読んだばかりで、以下は私が参照しているコードです
私の質問は、これまで、オブジェクト (または文字列) のベクトルを見たときはいつでも、ほとんどの場合、上記のように挿入が行われていることです。代わりに、v.push_back(std::move(s))
重複したオブジェクトを不必要に作成することはありません。
これは、オブジェクトを STL に追加する正しい方法である必要があります。関心があるのはコンテナー内のデータだけであり、それ以外の場合は変数ではありません。
c++ - コードが右辺値と左辺値ではなく右辺値を 2 回出力するのはなぜですか?
そこで、2 つのコンストラクターを持つクラスをstd::forward
作成して使用方法を練習したいと思いました。Test
1 は withT&
で、もう1 つはT&&
as オーバーロードです。左辺値をT&
出力し、右辺値を出力するので、どのコンストラクターが使用されているかがわかります。スタック上にクラスの 2 つのインスタンスを作成しますが、驚いたことに、どちらもオーバーロードを使用しています。T&&
T&&
元のstd::forward
関数を使用して実装しようとしましたが、どちらも右辺値x2 を出力しました。私は何を間違っていますか?