問題タブ [copy-elision]

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 に答える
100 参照

c++ - 削除された移動/コピー ctor を持つタイプのテンポラリを返す

次のプログラムを検討してください。

サンプル セッション:

gcc が を受け入れることに驚きましたnakedBrace()。概念的には、2 つの関数は同等であると考えました。一時的な関数がS構築されて返されます。コピー省略は実行される場合と実行されない場合がありますが、標準 (12.8/32) で義務付けられているように、move または copy ctor (両方ともここで削除されます) は引き続きアクセス可能でなければなりません。

nakedBrace()それは決して S を構築しないということですか? それとも、コピーの移動/ctorが概念的に必要ないように、ブレースの初期化を使用して戻り値に直接入力しますか?

0 投票する
0 に答える
159 参照

c++ - コピー不可能なタイプの連鎖コピー省略

次の例を検討してください。

コピー不可能なオブジェクトの 2 つのチェーンされたコピー省略可能リターンがあります。gcc 5.2 では問題なくコンパイルされます。しかし、実際にコピーを実行しようとしているため、gcc 4.8 も clang 3.7 も好きではありません。どのコンパイラが正しいですか? この動作を許可するように gcc が意図的に変更されたと想定しています。これは、このような場合に特に役立つと思われます。

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

c++ - 保証されたコピー省略はどのように機能しますか?

2016 年のオウル ISO C++ 標準会議では、単純化された値のカテゴリによる保証されたコピー省略と呼ばれる提案が、標準委員会によって C++17 に投票されました。

保証されたコピー省略はどのように機能しますか? コピーの省略がすでに許可されているいくつかのケースをカバーしていますか、またはコピーの省略を保証するためにコードの変更が必要ですか?