Namespaces
Variants

std::experimental:: optional

From cppreference.net
헤더 파일에 정의됨 <experimental/optional>
template < class T >
class optional ;
(라이브러리 fundamentals TS)

클래스 템플릿 std::experimental::optional 선택적(optional) 포함 값을 관리합니다. 즉, 존재할 수도 있고 존재하지 않을 수도 있는 값을 의미합니다.

optional 의 일반적인 사용 사례는 실패할 수 있는 함수의 반환 값입니다. std:: pair < T, bool > 과 같은 다른 접근 방식과 달리, optional 은 생성 비용이 높은 객체를 효율적으로 처리하며 의도가 명시적으로 표현되어 가독성이 더 높습니다.

optional<T> 의 모든 인스턴스는 특정 시점에 값을 포함하거나 값을 포함하지 않거나 둘 중 하나의 상태를 가집니다.

만약 optional<T> 가 값을 포함하는 경우 , 해당 값은 optional 객체의 메모리 공간 내에 할당되는 것이 보장됩니다. 즉, 동적 메모리 할당은 절대 발생하지 않습니다. 따라서 optional 객체는 operator*() operator->() 가 정의되어 있음에도 불구하고, 포인터가 아닌 객체를 모델링합니다.

optional<T> 타입의 객체가 bool로 문맥적 변환 될 때, 변환은 객체가 값을 포함하는 경우 true 를 반환하고, 객체가 값을 포함하지 않는 경우 false 를 반환합니다.

optional 객체는 다음 조건에서 값을 포함합니다 :

  • 객체는 T 타입의 값으로 초기화됩니다.
  • 객체는 값을 포함하는 다른 optional 로부터 할당됩니다.

객체가 값을 포함하지 않는 조건은 다음과 같습니다:

  • 객체가 기본 초기화됩니다.
  • 객체가 std::experimental::nullopt_t 값 또는 값을 포함하지 않는 optional 객체로 초기화됩니다.
  • 객체가 std::experimental::nullopt_t 값 또는 값을 포함하지 않는 optional 객체로부터 할당됩니다.

목차

템플릿 매개변수

T - 초기화 상태를 관리할 값의 타입. 해당 타입은 Destructible 요구 사항을 충족해야 합니다.

멤버 타입

멤버 타입 정의
value_type T

멤버 함수

optional 객체를 생성합니다
(public member function)
포함된 값이 있는 경우 이를 파괴합니다
(public member function)
내용을 할당합니다
(public member function)
Observers
포함된 값에 접근합니다
(public member function)
객체가 값을 포함하는지 확인합니다
(public member function)
포함된 값을 반환합니다
(public member function)
사용 가능한 경우 포함된 값을 반환하고, 그렇지 않으면 다른 값을 반환합니다
(public member function)
Modifiers
내용을 교환합니다
(public member function)
포함된 값을 제자리에서 생성합니다
(public member function)

멤버 객체

멤버 이름 정의
val (private) 포함된 값에 대한 포인터 (동일 객체의 데이터 멤버를 가리킴), 이름은 설명 목적으로만 사용됨

비멤버 함수

optional 객체 비교
(함수 템플릿)
optional 객체 생성
(함수 템플릿)
std::swap 알고리즘 특수화
(함수)

헬퍼 클래스

std::hash 알고리즘을 특수화함
(클래스 템플릿 특수화)
(library fundamentals TS)
초기화되지 않은 상태의 optional 타입을 나타내는 표시자
(클래스)
(library fundamentals TS)
optional 타입의 인-플레이스 생성용 구분 태그 타입
(클래스)
(library fundamentals TS)
값을 포함하지 않는 optional에 대한 검사된 접근을 나타내는 예외
(클래스)

헬퍼 객체

(library fundamentals TS)
nullopt_t 타입의 객체
(함수)
(library fundamentals TS)
std:: experimental :: in_place_t 타입의 객체
(함수)