Namespaces
Variants

C++ named requirements: Erasable (since C++11)

From cppreference.net
C++ named requirements

Указывает, что объект данного типа может быть уничтожен заданным 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 является Erasable из X .

Примечания

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

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

(до C++20)

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

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

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

Отчеты о дефектах

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

DR Applied to Behavior as published Correct behavior
N3346 C++11 не было требования указывать, может ли тип
объектов быть уничтожен с использованием аллокаторов
добавлено требование

Смотрите также

CopyInsertable
MoveInsertable
EmplaceConstructible
Destructible
**Примечание:** В данном случае весь текст на странице состоит из C++ специфических терминов (CopyInsertable, MoveInsertable, EmplaceConstructible, Destructible), которые согласно инструкциям не подлежат переводу. HTML теги и атрибуты также сохранены в оригинальном виде.