variant_variant_npos

variant_variant_npos (값 없음 상태를 나타내는 특수 값)

이 페이지는 std::variant_npos에 대해 설명해요. std::variant_nposstd::size_t 타입으로 표현할 수 있는 가장 큰 값과 같은 특수 값이에요. variantvalueless_by_exception() 상태일 때 index()가 반환하는 값으로 사용된답니다.

출처: cppreference

본문

정의

헤더 에 정의됨
inline constexpr std :: size_t variant_npos = -1 ; (since C++17)

설명

variant_nposstd::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]

더 알아보기 (Learn more)

cppreference