このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
const のパラメーター値によって不要なデータ コピーが生じることがあります
const パラメーター値によって移動操作が禁止され、その結果より高いパフォーマンスを必要とするコピー操作が発生することがある
説明
この欠陥は、関数パラメーターとしての const
オブジェクトによって、移動操作が禁止され、その結果より高いパフォーマンスを必要とするコピー操作が行われる可能性がある場合に発生します。
チェッカーは、特定の関数呼び出しで、移動操作が可能かどうかをチェックしません。チェッカーは、非トリビアル コピー操作と移動操作でクラス型を使用する const
関数パラメーターを強調表示するだけです。パラメーターを呼び出し先の関数に移動できるかどうかはユーザーが自分で決定できます。
リスク
関数の引数が rvalue の場合は、その引数に関連付けられたリソースが不要になり、呼び出し先関数内のパラメーターに "移動" できます。一般的に、移動操作の方がコピー操作よりコストがかからないため、コンパイラは、この状況では移動操作が使用されるようにします。const
オブジェクトを関数パラメーターとして使用する場合は、このコンパイラの最適化が明示的に回避されます。
修正方法
パラメーターを呼び出し先関数に移動できることがわかっている場合は、const
修飾子をフラグ付きの関数パラメーターから削除します。
パフォーマンスの改善の程度は、使用しているコンパイラ、ライブラリ実装、環境によって異なる可能性があります。
例
結果情報
グループ: パフォーマンス |
言語: C++ |
既定値: オフ |
コマンド ライン構文: CONST_PARAMETER_VALUE |
影響度: Low |
バージョン履歴
R2020a で導入