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 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 이 누락됨
요구 사항 추가됨

참고 항목

기본 생성 가능
복사 삽입 가능
이동 삽입 가능
배치 생성 가능
삭제 가능