C++ named requirements: Erasable (since C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
해당 타입의 객체가 주어진 Allocator 에 의해 파괴될 수 있음을 지정합니다.
목차 |
요구사항
주어진 유형, 값 및 표현식:
| 유형 | 정의 |
T
|
객체 유형 |
A
|
할당자 유형 |
X
|
다음 모든 조건을 만족하는 컨테이너 유형:
|
| 값 | 정의 |
| m |
A
유형의 lvalue
|
| 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 이전까지는
std::basic_string
요소들을 파괴할 때 사용자 정의
destroy
를 사용해야 했지만, 모든 구현체들은 기본 메커니즘만을 사용했습니다. 이 요구사항은 기존 관행과 일치하도록
P1072R10
에 의해 수정되었습니다.
결함 보고서
다음 동작 변경 결함 보고서는 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| N3346 | C++11 |
할당자를 사용하여 소멸될 수 있는 객체의 타입을
명시해야 할 요구사항이 없었음 |
요구사항 추가됨 |
참고 항목
| CopyInsertable | |
| MoveInsertable | |
| EmplaceConstructible | |
| Destructible |