AUTOSAR C++14 Rule A13-5-5
Comparison operators shall be non-member functions with identical parameter types and noexcept
説明
ルール定義
Comparison operators shall be non-member functions with identical parameter types and noexcept.
根拠
比較演算子で、型が異なるオブジェクトを比較してはなりません。型が異なるオブジェクトを引数として比較演算子に渡す場合、演算子は一方の引数をもう一方の引数のデータ型に変換できなければなりません。
メンバー関数には固有の制限があり、暗黙的なオブジェクト パラメーター (this ポインターによって参照されているもの) を別のデータ型に変換することはできません。必要に応じてデータ型変換をサポートするには、比較演算子を非メンバー関数として定義します。
比較式は基本的な演算であり、noexcept でなければなりません。このルールは、以下の比較演算子に適用されます。
==!=<<=>>=
メモ
メンバー関数と同様に比較演算子が内部データにアクセスできるようにするには、比較演算子を friend として宣言します。この手法は、ルール A11-3-1 の例外で許可されています。
Polyspace 実装
チェッカーはメンバー関数として定義されている比較演算子にフラグを設定します。また、非メンバー比較演算子についても、以下の場合はフラグを設定します。
同一ではないパラメーター型 (
classとintなど) を比較する場合。noexcept指定子を使用して宣言されていない場合。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: オーバーロード |
| カテゴリ: Required、Automated |
バージョン履歴
R2020b で導入