Namespaces
Variants

std::expected<T,E>::operator->, std::expected<T,E>::operator*

cppreference.net에서 가져옴
 
 
유틸리티 라이브러리
일반 유틸리티
관계 연산자 (C++20에서 폐지됨)
정수 비교 함수
(C++20)(C++20)(C++20)    
(C++20)
교체 및 타입 연산
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
공통 어휘 타입
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
 
기본 템플릿
constexpr const T* operator->() const noexcept;
(1) (C++23부터)
constexpr T* operator->() noexcept;
(2) (C++23부터)
constexpr const T& operator*() const& noexcept;
(3) (C++23부터)
constexpr T& operator*() & noexcept;
(4) (C++23부터)
constexpr const T&& operator*() const&& noexcept;
(5) (C++23부터)
constexpr T&& operator*() && noexcept;
(6) (C++23부터)
void 부분 특수화
constexpr void operator*() const noexcept;
(7) (C++23부터)

*this에 포함된 기댓값에 접근합니다.

1,2) 기댓값에 대한 포인터를 반환합니다.
3-6) 기댓값에 대한 참조를 반환합니다.
7) 아무것도 반환하지 않습니다.

has_value()이 false인 경우, 동작은 정의되지 않습니다.

(C++26까지)

has_value()이 false인 경우:

  • 구현이 강화됨 상태이면, 계약 위반이 발생합니다.
  • 구현이 강화되지 않은 상태이면, 동작은 정의되지 않습니다.
(C++26부터)

반환값

3,4) val
5,6) std :: move ( val  )

참고 사항

이 연산자들은 optional이 기대하는 값을 나타내는지 확인하지 않으며, 사용자는 수동으로 has_value() 또는 operator bool() 를 사용하여 확인할 수 있습니다. 또는 확인된 접근이 필요한 경우, value() 또는 value_or() 를 사용할 수 있습니다.

예제

#include <cassert>
#include <expected>
#include <iomanip>
#include <iostream>
#include <string>
int main()
{
    using namespace std::string_literals;
    std::expected<int, std::string> ex1 = 6;
    assert(*ex1 == 6);
    *ex1 = 9;
    assert(*ex1 == 9);
    // *ex1 = "error"s; // 오류: ex1은 int 타입의 기대값을 포함함
    ex1 = std::unexpected("error"s);
    // *ex1 = 13; // 미정의 동작: ex1은 예기치 않은 값을 포함함
    assert(ex1.value_or(42) == 42);
    std::expected<std::string, bool> ex2 = "Moon"s;
    std::cout << "ex2: " << std::quoted(*ex2) << ", size: " << ex2->size() << '\n';
    // std::expected 우측값에 operator*를 호출하여 기대값을 "가져올" 수 있음
    auto taken = *std::move(ex2);
    std::cout << "taken " << std::quoted(taken) << "\n"
                 "ex2: " << std::quoted(*ex2) << ", size: " << ex2->size() << '\n';
}

가능한 출력:

ex2: "Moon", size: 4
taken "Moon"
ex2: "", size: 0

참고 항목

기대값을 반환합니다
(public member function)
존재하는 경우 기대값을 반환하고, 그렇지 않으면 다른 값을 반환합니다
(public member function)
객체가 기대값을 포함하는지 확인합니다
(public member function)
예상치 못한 값을 반환합니다
(public member function)