move semanticsの起源は何ですか?特にこの言語のために特別に考案されたものか、他の言語で類似したものがありましたか?後者の場合、いくつかの参考資料を与えることができます。C++での移動セマンティクスの起源は?
答えて
概念に特定の祖先はありません。 C++の動きの意味の起源は、the original proposalで述べたように、ニュースグループでの議論した様々な形で
移動セマンティクスは年間のC++フォーラム(。最も 顕著comp.lang.C++司会)で議論されてきました。
私の心には、私は間違っていないと、C++の概念である誤って評価されていない、左辺値と右辺値のC++の概念と密接に結びついています。左辺値、右辺値およびそれらの新しいC++ 11の友人を持たない言語は、C++がそれらを実装する方法では移動セマンティクスを必要としません。
しかし、より一般的には、コピーではなく移動物を動かすというコンセプトは単なる基本的な概念です。リンクされたリストを作成し、ポインタを実際にスワップするだけで要素を交換するたびに、「移動」します。基本的に。
lvalueとrvalueのコンセプトはCから来たものですが、lvalueという用語のみを使用し、rvaluesは「lvalueではない」と言いました。 – bames53
@ bames53:\ * nods \ *私は、提案リンクのために –
+1と思っていました:) –
あなたは概念の背後にある動機についてより多くの情報を得るために"A Proposal to Add Move Semantics Support to the C++ Language"を読むことができるだけでなく、これはむしろ、図書館施設を使用して実装されているよりも、直接言語サポートを持っている必要が理由。
- 1. C++での移動セマンティクスの活用
- 2. C++ rvalueリファレンスと移動セマンティクス
- 3. MS C++対Clangのセマンティクスを移動
- 4. 移動セマンティクス
- 5. このコードは合法ですか? (C++ 0xセマンティクスの移動)
- 6. C++ Rvalue参照と移動セマンティクス
- 7. 移動セマンティクス:ポストセットnullptr
- 8. FUSEでのセマンティクスのコピー/移動
- 9. C++には移動と削除のセマンティクスがありますか?
- 10. 親のマウス移動の画像の起源が
- 11. 出力パラメータと移動セマンティクス
- 12. ユニークPTRとセマンティクスを移動
- 13. C++ 11、戻りベクトルのセマンティクスを移動する関数のスタイル
- 14. ローカルオブジェクトを返すときにC++ 11のセマンティクスが移動する
- 15. 左辺のセマンティクスを移動する
- 16. 変換演算子のセマンティクスを移動
- 17. Rustのセマンティクスを移動する
- 18. 「* thisへの移動セマンティクスの拡張」とは何ですか?
- 19. CloudFrontは:起源
- 20. 移動セマンティクス遅くコピーし、私が移動し、テストのセマンティクスを比較する小さなテストを書い++
- 21. 例外安全なコードと移動セマンティクス
- 22. セマンティクスと戻り値を移動する
- 23. セマンティクスとconst参照を移動する
- 24. 移動セマンティクス - 副作用、破壊
- 25. クロスドメインAJAXリクエスト:起源のhttp:// ...は、アクセス制御 - 許可 - 起源
- 26. g ++のstd :: vectorsでの移動セマンティクスの使用
- 27. Wordpressのサイドバーがブログのコンテンツ(起源)の左側に移動しました
- 28. 外部電源でAndroidを起動
- 29. 移動セマンティクスをトリガーするコンストラクタはどれですか?
- 30. 「pretty url」の起源?
おそらく、C++ 11で移動セマンティクスのための最も説得力のある理由の一つは、明らかauto_ptr' 'のハッキングアップ実装で明らかにC++ 03で移動セマンティクスの欠如です。 *サポートしたいものがありましたが、言語サポートの不足のためにきれいにできないものがあったことは明らかでした。 –
移動セマンティクスは、人がプログラミングしていた限り、周りにありましたが、すべて手動でした。言語機能としての移動セマンティクスの導入は、型システムに「移動可能」という考え方をエンコードする方法です。コンパイラは、いつ物を移動するかを決めることができます。移動する。 C++でのセマンティクスの移動は、C++の型システムにおける情報のエンコードに重点を置いています。私は、C++と同じ型システムに重点を置いた初期の言語は認識していません。 – bames53
@ bames53:それは答えとして素晴らしいかもしれません。 –