Namespaces
Variants

C++ named requirements: DefaultConstructible

From cppreference.net
C++ named requirements

해당 타입의 인스턴스가 기본 생성될 수 있음을 지정합니다.

목차

요구사항

타입 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 타입의 객체를 빈 초기화자로
초기화할 때 값 초기화만 가능했음
집합체 초기화도
가능하도록 변경

참고 항목

타입이 기본 생성자를 가지는지 검사합니다
(클래스 템플릿)
타입의 객체가 기본 생성될 수 있음을 명시합니다
(컨셉트)