Const std::move 入力により、オブジェクトのコピーの計算量が増大する可能性がある
Const std::move 入力は移動できないため、より計算量の多いコピー操作が行われる
説明
この欠陥は、const オブジェクトに対して std::move を使用することによって、より計算量の多いコピー操作が行われることによって発生します。l
チェッカーは、非トリビアルなコピー操作と移動操作を伴うクラス型に対してのみ違反を発生させます。
リスク
const オブジェクトは、変更できないため、移動できません。const オブジェクトに対する std::move は、コンパイル エラーなしでコピー操作に戻されます。問題に気付くことなく、コードのパフォーマンスが低下する可能性があります。
修正方法
移動するオブジェクトから const 修飾子を削除します。
代わりにコピー操作が必要な場合は、冗長な std::move 呼び出しを削除します。
この問題はチェッカーの [const オブジェクトの移動操作] をトリガーすることにも注意してください。このことは、このクラス型に移動操作と非トリビアルなコピー操作があるかどうかに関係なく、const オブジェクトに対するすべての移動操作に適用されます。問題を正当化する場合は、両方の結果に対して同じ正当化を使用できます。
パフォーマンスの改善の程度は、使用しているコンパイラ、ライブラリ実装、環境によって異なる可能性があります。
例
結果情報
| グループ: パフォーマンス |
| 言語: C++ |
| 既定値: オフ |
コマンド ライン構文: EXPENSIVE_STD_MOVE_CONST_OBJECT |
| 影響度: Medium |
バージョン履歴
R2020b で導入