AUTOSAR C++14 Rule A18-1-6

Весь станд.:: специализации хеша для пользовательских типов должны иметь noexcept оператор вызова функции

Описание

Управляйте определением

Весь станд.:: специализации хеша для пользовательских типов должны иметь noexcept оператор вызова функции.

Объяснение

std::hash специализации, обеспеченные стандартной библиотекой, имеют гарантию никаких исключений. Если вы вручную создаете std::hash специализация, эмулируйте эту гарантию своей специализации. Задайте все специализации std::hash для ваших пользовательских типов данных как noexcept.

В противном случае, стандартные контейнеры библиотеки, которые используют вашу специализацию std::hash косвенно может выдать неперехваченные исключения. Исключения не отловлены, потому что стандартные контейнеры библиотеки не обеспечивают способ использовать try- catch блоки для исключений из std::hash.

Реализация Polyspace

Средство проверки отмечает специализации std::hash обработайте по шаблону с определяемыми пользователем типами, которые не имеют noexcept спецификатор.

Поиск и устранение проблем

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

Проверяйте информацию

Группа: вспомогательная библиотека Языка
Категория: необходимый, автоматизированный
Введенный в R2020a