C++ named requirements: DefaultInsertable (since C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Указывает, что объект данного типа может быть сконструирован по умолчанию на месте с помощью заданного аллокатора.
Содержание |
Требования
Даны следующие типы, значения и выражения:
| Тип | Определение |
T
|
тип объекта |
A
|
тип аллокатора |
X
|
тип контейнера, удовлетворяющий всем следующим условиям:
|
| Значение | Определение |
| 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 |