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

c++ - C++11 コピー エリソンと例外 (キャッチ引数)

コード レビューの後、try/catch ブロックのコピー エリソンに問題がありました。このページを読んだ後: cppリファレンスガイド、特にこの段落:

例外を処理するとき、catch 句の引数がスローされた例外オブジェクトと同じ型 (最上位の cv 修飾を無視) である場合、コピーは省略され、catch 句の本体は例外オブジェクトに直接アクセスします。参照によってキャッチされた場合

私は、キャッチ内の引数のコピー省略が自動的に実行されると考えていましたが、レビュー担当者の 1 人が、コンパイラによってコピー省略が実行されなかったことを示す簡単なテストを実行しました。

でコンパイルする場合:

次の出力を得ました

(例外がスローされたときにコピーコンストラクターを1回だけ呼び出す)のような出力を期待していました:

テストは、g++ バージョンの Linux Ubuntu 16.04 で実行されました。

テストケースは無効ですか、それともコピー省略に関する私の理解は間違っていますか? ご助力ありがとうございます