Почему std :: allocator :: deallocate не исключение? - PullRequest
0 голосов
/ 25 октября 2018

Спецификация C ++ (ISO / IEC 14882: 2011 + ISO / IEC 14882: 2014) определяет в Таблицу 28 - Требования к распределителю для освобождения:

Все n T объектовв зоне, указанной p, должен быть уничтожен до этого вызова.n должен соответствовать значению, переданному для выделения для получения этой памяти.Не генерирует исключения.

Но почему освобождение все еще не noexcept?

1 Ответ

0 голосов
/ 25 октября 2018

Это узкий контракт (вызывающий неопределенное поведение, если вы передаете ему указатель, например, не возвращаемый allocate), поэтому в соответствии с обычной политикой стандартной библиотеки он не помечается как noexcept.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...