C++ named requirements: DefaultConstructible
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
해당 타입의 인스턴스가 기본 생성될 수 있음을 지정합니다.
목차 |
요구사항
타입
T
가 다음의 모든 문장과 표현식이 유효하고 지정된 효과를 가질 경우
DefaultConstructible
을 만족합니다:
| 표현식/문장 | 사후 조건 |
|---|---|
| T u ; | 객체 u 가 기본 초기화(default-initialized) 됨. |
| T u { } ; | 객체 u 가 값 초기화(value-initialized) 또는 집합체 초기화(aggregate-initialized) 됨. |
|
T
(
)
T { } |
T
타입의 임시 객체가
값 초기화(value-initialized)
또는
집합체 초기화(aggregate-initialized)
됨.
|
참고 사항
비-집합체 클래스 타입의 객체에 대해서는, default constructor 가 공개적으로 정의되어야(사용자 정의되거나 암시적으로 정의) DefaultConstructible 을 만족합니다.
비클래스 객체 타입의 non-class object type 비상수 객체는 항상 DefaultConstructible 입니다.
const 비클래스 타입은 DefaultConstructible 이 아닙니다.
const 집계 타입은 해당 멤버 중 비클래스 타입의 객체가 있을 경우 DefaultConstructible 이 아닙니다.
비객체 타입(함수 타입, 참조 타입, 그리고 (cv 한정자가 있을 수 있는) 타입 void ) 그리고 const 비객체 타입들은 절대 DefaultConstructible 이 될 수 없습니다.
결함 보고서
다음 동작 변경 결함 보고서는 이전에 게시된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 724 | C++98 | DefaultConstructible 요구 사항이 누락됨 | 추가됨 |
| LWG 2170 | C++98 |
DefaultConstructible
타입의 객체를 빈 초기화자로
초기화할 때 값 초기화만 가능했음 |
집합체 초기화도
가능하도록 변경 |
참고 항목
|
(C++11)
(C++11)
(C++11)
|
타입이 기본 생성자를 가지는지 검사합니다
(클래스 템플릿) |
|
(C++20)
|
타입의 객체가 기본 생성될 수 있음을 명시합니다
(컨셉트) |