Namespaces
Variants

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

From cppreference.net
C++ named requirements

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

Содержание

Требования

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

Тип Определение
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 > :: construct ( m, p ) корректно, T является DefaultInsertable в X .

Примечания

По умолчанию это будет value-инициализировать объект, как при помощи :: new ( ( void * ) p ) T ( ) (до C++20) std:: construct_at ( p ) (начиная с C++20) .

Если инициализация значением нежелательна, например, если объект имеет неклассовый тип и обнуление не требуется, её можно избежать, предоставив пользовательскую реализацию Allocator::construct .

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

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

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

DR Applied to Behavior as published Correct behavior
N3346 C++11 the requirements CopyInsertable and MoveInsertable
are present, but DefaultInsertable was missing
added the requirement

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

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