C++ named requirements: DefaultInsertable (since C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
주어진 할당자를 사용하여 해당 타입의 객체를 제자리에서 기본 생성할 수 있음을 지정합니다.
목차 |
요구사항
주어진 유형, 값 및 표현식:
| 유형 | 정의 |
T
|
객체 유형 |
A
|
할당자 유형 |
X
|
다음 모든 조건을 만족하는 컨테이너 유형:
|
| 값 | 정의 |
| m |
A
유형의 lvalue
|
| p |
T*
유형의 포인터
|
만약 표현식
std::
allocator_traits
<
A
>
::
construct
(
m, p
)
가 유효하다면,
T
는
DefaultInsertable
입니다
X
에.
참고 사항
기본적으로, 이는 객체를 값 초기화 하며, 다음과 같습니다 :: new ( ( void * ) p ) T ( ) (C++20까지) std:: construct_at ( p ) (C++20부터) .
값 초기화가 바람직하지 않은 경우, 예를 들어 객체가 비클래스 타입이고 영점 설정이 필요하지 않다면,
사용자 정의
Allocator::construct
를 제공하여 이를 피할 수 있습니다.
C++23 이전까지
std::basic_string
의 요소를 생성할 때 사용자 정의
construct
를 사용해야 했지만, 모든 구현체는 기본 메커니즘만 사용했습니다. 이 요구사항은 기존 관행과 일치하도록
P1072R10
에 의해 수정되었습니다.
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| N3346 | C++11 |
요구 사항
CopyInsertable
과
MoveInsertable
가 존재하지만 DefaultInsertable 이 누락됨 |
요구 사항 추가됨 |
참고 항목
| 기본 생성 가능 | |
| 복사 삽입 가능 | |
| 이동 삽입 가능 | |
| 배치 생성 가능 | |
| 삭제 가능 |