AUTOSAR C++14 Rule A8-4-5
説明
ルール定義
"consume" parameters declared as X && shall always be moved from.
根拠
関数を宣言するとき、関数パラメーターを非定数で非テンプレートの rvalue 参照または "consume" (X&&) パラメーターとして宣言することにより、そのパラメーターの内容を移動する意図を示すことができます。たとえば、関数 void foo(std::vector<std::string>&& V) のパラメーターは "consume" パラメーターとして宣言されています。この宣言では、関数の本体内でベクトル V の内容の、コピーではなく移動が意図されていることが暗黙のうちに示されています。
関数パラメーターを "consume" パラメーターとして宣言する場合は、パラメーター使用時に移動セマンティクスを使用します。関数呼び出しに lvalue 参照を使用している場合、関数の本体内では関数 std::move を明示的に使用します。
Polyspace 実装
Polyspace® は、以下の条件を両方とも満たす場合に、関数の定義にフラグを設定します。
少なくとも 1 つの関数パラメーターが非定数で非テンプレートの rvalue 参照、すなわち "consume" (
X&&) パラメーターとして宣言されている。X&&パラメーターの内容を、関数の本体内で関数std::moveを使用して別のオブジェクトに完全には移動していない。
Polyspace は、移動コンストラクターおよび移動代入演算子に対して、このルールの違反を報告しません。
トラブルシューティング
ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 宣言子 |
| カテゴリ: Required、Automated |
バージョン履歴
R2021a で導入