variant_variant_npos
variant_variant_npos (값 없음 상태를 나타내는 특수 값)
이 페이지는 std::variant_npos에 대해 설명해요. std::variant_npos는 std::size_t 타입으로 표현할 수 있는 가장 큰 값과 같은 특수 값이에요. variant가 valueless_by_exception() 상태일 때 index()가 반환하는 값으로 사용된답니다.
출처: cppreference
본문
정의
| 헤더 |
||
|---|---|---|
| inline constexpr std :: size_t variant_npos = -1 ; | (since C++17) |
설명
variant_npos는 std::size_t로 나타낼 수 있는 가장 큰 값과 동일한 특수 값이에요. variant 객체가 예외로 인해 값을 잃어버린 상태, 즉 valueless_by_exception()이 true인 경우에 index()는 이 값을 반환한답니다. 이 값은 마치 "유효한 인덱스가 아님"을 나타내는 표식처럼 동작해요.
예제
다음 예제는 variant_npos가 실제로 어떻게 사용되는지 보여줘요.
#include <iostream>
#include <stdexcept>
#include <string>
#include <variant>
struct Demon
{
Demon(int) {}
Demon(const Demon&) { throw std::domain_error("copy ctor"); }
Demon& operator= (const Demon&) = default;
};
int main()
{
std::variant<int, Demon> var{42};
std::cout
<< std::boolalpha
<< "index == npos: " << (var.index() == std::variant_npos) << '\n';
try { var = Demon{666}; } catch (const std::domain_error& ex)
{
std::cout
<< "Exception: " << ex.what() << '\n'
<< "index == npos: " << (var.index() == std::variant_npos) << '\n'
<< "valueless: " << var.valueless_by_exception() << '\n';
}
}
출력
가능한 출력은 다음과 같아요.
index == npos: false
Exception: copy ctor
index == npos: true
valueless: true
같이 보기
| index | variant가 보유한 대안의 0부터 시작하는 인덱스를 반환해요 (public 멤버 함수) [edit] |
|---|---|
| valueless_by_exception | variant가 유효하지 않은 상태인지 확인해요 (public 멤버 함수) [edit] |