AUTOSAR C++14 Rule A18-1-6

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

Описание

Определение правила

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

Объяснение

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

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

Реализация Polyspace

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

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

Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».

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

Группа: Библиотека языковой поддержки
Категория: Необходимый, Автоматизированный
Введенный в R2020a