[過去ログ] 次世代言語14 Elixir Crystal Julia Rust Swift (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
113(2): デフォルトの名無しさん [sage] 2018/09/16(日) 09:42:39 ID:AUVu3qQo(1/5) AAS
Rustのmoveは確かにイマイチ
ローカル変数は = でmove出来るが
構造体フィールドは = では不可なためmem::replaceを使う
ライフタイムの違いによるものとはいえ記述の一貫性に欠ける
この点はC++のstd::moveの方が一貫性がある
114(1): デフォルトの名無しさん [sage] 2018/09/16(日) 10:35:29 ID:AUVu3qQo(2/5) AAS
具体例が無いのも何なので一応
RustとC++コード例 >>113での要点はfooの中身
外部リンク:ideone.com
外部リンク:ideone.com
117(1): デフォルトの名無しさん [sage] 2018/09/16(日) 18:24:03 ID:AUVu3qQo(3/5) AAS
>>115このコードに問題も未定義動作も無いぞ
unique_ptrのムーブコンストラクタにより適切に所有権が移動される
120: デフォルトの名無しさん [sage] 2018/09/16(日) 21:18:37 ID:AUVu3qQo(4/5) AAS
>>118118(1): デフォルトの名無しさん [sage] 2018/09/16(日) 20:39:05 ID:eufVg8gX(2/4) AAS
>>116
すまん 言葉足らずだった
Rustに関してはその通りだよ
でもC++はRustみたいに強力なボローチェッカーがないからmoveはまずい
>>117
そのコードは確かに未定義動作は起こさない
でも未定義動作を起こす危険性を含む
C++の方のfooメソッドの最後の一行をコメントアウトしても
コンパイルが通ってしまうって言えば何が危険か分かるよね
それを防ぐためにはC++の方もreplaceでなきゃダメ
fooの最後の一行をコメントアウトしても何も危険は無いんだが
C++のムーブセマンティクスの動作や仕様を理解出来てないんじゃないか?
121(1): デフォルトの名無しさん [sage] 2018/09/16(日) 21:32:49 ID:AUVu3qQo(5/5) AAS
もしかしてmoveされた側が不定値にでもなると勘違いしてるのかね
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.040s