C++ безопасность исключений unordered_map

Я бродил по спецификациям C++ (cplusplus.com) и обнаружил, что там ничего не сказано о безопасности исключений для std::unordered_map.

так что в основном, если я пишу

map["foo"]=5;

и выдается исключение из-за нехватки памяти или bad_alloc, что я могу предположить о своей карте?

  • Он оставлен в допустимом состоянии? (базовая гарантия)
  • Оставить без изменений? (сильная гарантия)
  • Он оставлен в недействительном состоянии? (нет гарантии)

person CoffeDeveloper    schedule 22.06.2013    source источник


Ответы (1)


23.2.4.1 Гарантии безопасности исключений [associative.reqmts.except]

2 Для ассоциативных контейнеров, если в результате любой операции из функции вставки или замены, вставляющей один элемент, возникает исключение, вставка не имеет никакого эффекта.

Этот абзац относится к оператору индексации. Так:

  • Он оставлен без изменений. (сильная гарантия)
person Howard Hinnant    schedule 22.06.2013
comment
Спасибо! Я подозревал, что это надежная гарантия, но не смог найти никакой документации. - person CoffeDeveloper; 22.06.2013