std::optional<T>:: operator->, std::optional<T>:: operator*
|
constexpr
const
T
*
operator
-
>
(
)
const
noexcept
;
|
(1) | (C++17부터) |
|
constexpr
T
*
operator
-
>
(
)
noexcept
;
|
(2) | (C++17부터) |
|
constexpr
const
T
&
operator
*
(
)
const
&
noexcept
;
|
(3) | (C++17부터) |
|
constexpr
T
&
operator
*
(
)
&
noexcept
;
|
(4) | (C++17부터) |
|
constexpr
const
T
&&
operator
*
(
)
const
&&
noexcept
;
|
(5) | (C++17부터) |
|
constexpr
T
&&
operator
*
(
)
&&
noexcept
;
|
(6) | (C++17부터) |
포함된 값에 접근합니다.
|
만약 has_value() 가 false 라면, 동작은 정의되지 않습니다. |
(C++26 이전) |
|
만약 has_value() 가 false 라면:
|
(C++26 이후) |
목차 |
반환값
val
val
val
)
참고 사항
이 연산자는 * this 가 값을 포함하는지 여부를 확인하지 않으며, 사용자는 has_value() 또는 operator bool() 를 사용하여 수동으로 확인할 수 있습니다. 또는 확인된 접근이 필요한 경우 value() 또는 value_or() 를 사용할 수 있습니다.
예제
#include <iomanip> #include <iostream> #include <optional> #include <string> int main() { using namespace std::string_literals; std::optional<int> opt1{1}; std::cout << "opt1: " << *opt1 << '\n'; *opt1 = 2; std::cout << "opt1: " << *opt1 << '\n'; std::optional<std::string> opt2{"abc"s}; std::cout << "opt2: " << std::quoted(*opt2) << ", size: " << opt2->size() << '\n'; // rvalue optional에 대해 operator*를 호출하여 포함된 값을 "가져올" 수 있습니다 auto taken = *std::move(opt2); std::cout << "taken: " << std::quoted(taken) << "\n" "opt2: " << std::quoted(*opt2) << ", size: " << opt2->size() << '\n'; }
출력:
opt1: 1 opt1: 2 opt2: "abc", size: 3 taken: "abc" opt2: "", size: 0
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 2762 | C++17 |
operator->
와
operator*
가 잠재적으로 예외를 발생시킬 수 있음
|
noexcept로 지정됨 |
참고 항목
|
포함된 값을 반환합니다
(public member function) |
|
|
사용 가능한 경우 포함된 값을, 그렇지 않으면 다른 값을 반환합니다
(public member function) |