const rvalue 参照パラメーターにより、不要なデータ コピーが発生する可能性があります
説明
この欠陥は、関数が const rvalue 参照をパラメーターとして取る場合に発生します。たとえば、この移動コンストラクターは const rvalue 参照を取ります。
class aClass {
public:
aClass (const aClass&& anotherClass);
}リスク
rvalue 参照パラメーターの const の特性により、期待される移動操作が妨げられます。
たとえば、この問題は const パラメーターを持つコピー コンストラクターからのコピー アンド ペーストで移動コンストラクターを記述した場合に発生する可能性があります。次に例を示します。
aClass (const aClass& anotherClass);
& は && に変更したものの、参照内またはコンストラクター本体のコピー操作で const を省略するのを忘れたとします。この場合、const rvalue 参照を持つ移動コンストラクターはエラーなしでコンパイルされますが、実際にデータをコピーする移動コンストラクターが非効率的になります。修正方法
rvalue 参照パラメーターから const 修飾子を削除します。
たとえば、前のセクションでの移動コンストラクターは次のように書き換えることができます。
class aClass {
public:
aClass (aClass&& anotherClass);
}パフォーマンスの改善の程度は、使用しているコンパイラ、ライブラリ実装、環境によって異なる可能性があります。
例
結果情報
| グループ: パフォーマンス |
| 言語: C++ |
| 既定値: オフ |
コマンド ライン構文: CONST_RVALUE_REFERENCE_PARAMETER |
| 影響度: Low |
バージョン履歴
R2021a で導入