Spec-Zone.ru › C++

Именованные требования C++: стираемый (начиная с C++11)

Требует, чтобы объект типа можно было уничтожить с помощью заданного Allocator.

Требования

Для следующих типов, значений и выражений:

Тип Определение
T тип объекта
A тип аллокатора
X тип контейнера, удовлетворяющий всем следующим условиям:
  • X::value_type совпадает с T.
  • X::allocator_type совпадает с std::allocator_traits<A>::rebind_alloc<T>.
Значение Определение
m lvalue типа A
p указатель типа T*

Если выражение std::allocator_traits<A>::destroy(m, p) корректно, T является стираемым из X.

Примечания

Все контейнеры стандартной библиотеки требуют, чтобы их типы значений удовлетворяли требованию Erasable.

Для аллокатора по умолчанию это требование эквивалентно корректности p->~T(), которому удовлетворяют типы классов с доступными деструкторами и все скалярные типы, но не удовлетворяют типы массивов, функций, ссылок и void.

(до C++20)

Для аллокатора по умолчанию это требование эквивалентно корректности std::destroy_at(p), которому удовлетворяют типы классов с доступными деструкторами, все скалярные типы, а также массивы этих типов.

(начиная с C++20)

Хотя до C++23 при уничтожении элементов std::basic_string требовалось использовать настроенный destroy, все реализации использовали только механизм по умолчанию. Требование исправлено в P1072R10, чтобы оно соответствовало существующей практике.

Отчёты об ошибках

Следующие отчёты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам C++.

DR Применён к Поведение согласно опубликованной версии Корректное поведение
N3346 C++11 не было требования указывать, должен ли тип,
объекты которого можно уничтожить с помощью аллокаторов
добавлено требование

См. также

CopyInsertable
MoveInsertable
EmplaceConstructible
Destructible

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/named_req/Erasable

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API