C++ именованные требования: Уничтожаемый (с C++11)
Указывает, что объект типа может быть уничтожен заданным Аллекатором.
Требования
Тип T является Уничтожаемым из Контейнера X, чей value_type идентичен T, если, учитывая
A | тип аллокатора |
m | lvalue типа A |
p | указатель типа T*, подготовленный контейнером |
где X::allocator_type идентичен std::allocator_traits<A>::rebind_alloc<T>,
следующее выражение является допустимым:
std::allocator_traits<A>::destroy(m, p);
Если X не поддерживает аллокаторы или является специализацией std::basic_string, термин определяется как если бы A был std::allocator<T>, за исключением того, что не нужно создавать объект аллокатора, и пользовательские специализации std::allocator не подключаются.
Примечания
Все стандартные контейнеры библиотеки требуют, чтобы их тип элемента удовлетворял требованию Уничтожаемый.
| С использованием по умолчанию аллокатора, это требование эквивалентно валидности | (до C++20) |
| С использованием по умолчанию аллокатора, это требование эквивалентно валидности | (с C++20) |
Хотя при уничтожении элементов std::basic_string требуется использование настраиваемого destroy до C++23, все реализации использовали только механизм по умолчанию. Требование исправлено в P1072R10 для соответствия существующей практике.
См. также
| Копируемый вставляемый | |
| Перемещаемый вставляемый | |
| Конструируемый с помощью emplace | |
| Деструктируемый |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req/Erasable