std::experimental:: optional
|
헤더 파일에 정의됨
<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
타입의 객체
(함수) |