AUTOSAR C++14 Rule A18-1-6
All std::hash specializations for user-defined types shall have a noexcept function call operator
Description
Rule Definition
All std::hash specializations for user-defined types shall have a noexcept function call operator.
Rationale
std::hash specializations provided by the standard library have a
guarantee of no exceptions. If you manually create a std::hash
specialization, emulate this guarantee for your specialization. Define all specializations
of std::hash for your custom data types as
noexcept.
Otherwise, standard library containers that use your specialization of
std::hash indirectly might throw uncaught exceptions. The exceptions
are not caught because the standard library containers do not provide a way to use
try-catch blocks for exceptions from
std::hash.
Polyspace Implementation
The checker flags specializations of the std::hash template with user
defined types that do not have a noexcept specifier.
Troubleshooting
If you expect a rule violation but Polyspace® does not report it, see Diagnose Why Coding Standard Violations Do Not Appear as Expected.
Check Information
| Group: Language support library |
| Category: Required, Automated |
Version History
Introduced in R2020a