メインコンテンツ

AUTOSAR C++14 Rule A18-1-6

All std::hash specializations for user-defined types shall have a noexcept function call operator

説明

ルール定義

ユーザー定義型のすべての std::hash 特殊化に関数 noexcept 呼び出し演算子が含まれるものとします。

根拠

標準ライブラリで提供される std::hash 特殊化には、例外なしの保証が付いています。std::hash 特殊化を手動で作成する場合は、特殊化に対するこの保証をエミュレートします。カスタム データ型の std::hash のすべての特殊化は noexcept として定義します。

そうしなかった場合は、std::hash の特殊化を間接的に使用する標準ライブラリ コンテナーが、キャッチされない例外をスローする可能性があります。標準ライブラリ コンテナーが std::hash からの例外に対して try-catch ブロックを使用する手段を提供していないため、例外はキャッチされません。

Polyspace 実装

チェッカーは、noexcept 指定子がないユーザー定義の型をもつ std::hash テンプレートの特殊化にフラグを設定します。

トラブルシューティング

ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。

チェック情報

グループ: 言語サポート ライブラリ
カテゴリ: Required、Automated

バージョン履歴

R2020a で導入