問題タブ [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.
c++ - C++11 コピー エリソンと例外 (キャッチ引数)
コード レビューの後、try/catch ブロックのコピー エリソンに問題がありました。このページを読んだ後: cppリファレンスガイド、特にこの段落:
例外を処理するとき、catch 句の引数がスローされた例外オブジェクトと同じ型 (最上位の cv 修飾を無視) である場合、コピーは省略され、catch 句の本体は例外オブジェクトに直接アクセスします。参照によってキャッチされた場合
私は、キャッチ内の引数のコピー省略が自動的に実行されると考えていましたが、レビュー担当者の 1 人が、コンパイラによってコピー省略が実行されなかったことを示す簡単なテストを実行しました。
でコンパイルする場合:
次の出力を得ました
(例外がスローされたときにコピーコンストラクターを1回だけ呼び出す)のような出力を期待していました:
テストは、g++ バージョンの Linux Ubuntu 16.04 で実行されました。
テストケースは無効ですか、それともコピー省略に関する私の理解は間違っていますか? ご助力ありがとうございます