Весь станд.:: специализации хеша для пользовательских типов должны иметь noexcept оператор вызова функции
Весь станд.:: специализации хеша для пользовательских типов должны иметь noexcept оператор вызова функции.
std::hash
специализации, обеспеченные стандартной библиотекой, имеют гарантию никаких исключений. Если вы вручную создаете std::hash
специализация, эмулируйте эту гарантию своей специализации. Задайте все специализации std::hash
для ваших пользовательских типов данных как noexcept
.
В противном случае, стандартные контейнеры библиотеки, которые используют вашу специализацию std::hash
косвенно может выдать неперехваченные исключения. Исключения не отловлены, потому что стандартные контейнеры библиотеки не обеспечивают способ использовать try
- catch
блоки для исключений из std::hash
.
Средство проверки отмечает специализации std::hash
обработайте по шаблону с определяемыми пользователем типами, которые не имеют noexcept
спецификатор.
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
Группа: вспомогательная библиотека Языка |
Категория: необходимый, автоматизированный |