exponenta event banner

Правило AUTOSAR C++ 14 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