Namespaces
Variants

std::bad_variant_access

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



 
 
헤더 <variant>
class bad_variant_access : public std::exception
(C++17부터)에 정의됨

std::bad_variant_access 은(는) 다음 상황에서 발생하는 예외의 타입입니다:

(C++26부터)

멤버 함수

(생성자)
새로운 bad_variant_access 객체를 생성함
(public 멤버 함수)
operator=
bad_variant_access 객체를 대체함
(public 멤버 함수)
what
설명 문자열을 반환함
(public 멤버 함수)

std::bad_variant_access:: bad_variant_access

bad_variant_access ( ) noexcept ;
(1) (C++17부터)
(C++26부터 constexpr)
bad_variant_access ( const bad_variant_access & other ) noexcept ;
(2) (C++17부터)
(C++26부터 constexpr)

bad_variant_access 객체를 생성합니다. 구현에서 정의된 null-terminated byte string을 포함하며, 이는 what() 을 통해 접근할 수 있습니다.

1) 기본 생성자입니다.
2) 복사 생성자입니다. * this 와 other 모두 동적 타입이 std::bad_variant_access 인 경우 std:: strcmp ( what ( ) , other. what ( ) ) == 0 입니다.

매개변수

other - 복사할 다른 예외 객체

std::bad_variant_access:: operator=

bad_variant_access & operator = ( const bad_variant_access & other ) noexcept ;
(C++17부터)
(C++26부터 constexpr)

other 의 내용을 할당합니다. * this 와 other 모두 동적 타입 std::bad_variant_access 를 가지고 있다면, 할당 후 std:: strcmp ( what ( ) , other. what ( ) ) == 0 입니다.

매개변수

other - 할당할 다른 예외 객체

반환 값

* this

std::bad_variant_access:: what

virtual const char * what ( ) const noexcept ;
(C++17부터)
(constexpr since C++26)

설명 문자열을 반환합니다.

반환값

설명 정보를 포함하는 구현 정의 널 종료 문자열에 대한 포인터입니다. 이 문자열은 std::wstring 으로 변환 및 표시하기에 적합합니다. 이 포인터는 최소한 해당 포인터를 얻은 예외 객체가 파괴되거나, 예외 객체의 비상수 멤버 함수(예: 복사 할당 연산자)가 호출되기 전까지 유효함이 보장됩니다.

상수 평가 중에는 반환된 문자열이 일반 리터럴 인코딩으로 인코딩됩니다.

(C++26부터)

참고

구현체는 what() 을 재정의할 수 있지만 필수는 아닙니다.

std:: exception 로부터 상속됨

멤버 함수

[virtual]
예외 객체를 파괴함
( std::exception 의 virtual public 멤버 함수)
[virtual]
설명 문자열을 반환함
( std::exception 의 virtual public 멤버 함수)

예제

#include <iostream>
#include <variant>
int main()
{
    std::variant<int, float> v;
    v = 12;
    try
    {
        std::get<float>(v);
    }
    catch (const std::bad_variant_access& e)
    {
        std::cout << e.what() << '\n';
    }
}

가능한 출력:

bad_variant_access

참고 항목

인덱스나 타입(타입이 고유한 경우)으로 variant의 값을 읽어오며, 오류 시 예외를 발생시킴
(함수 템플릿)
(C++17)
하나 이상의 variant 가 보유한 인자들로 제공된 함수자를 호출함
(함수 템플릿)
(C++26)
variant 가 보유한 인자로 제공된 함수자를 호출함
(public member function)
값을 포함하지 않는 optional에 대한 검사된 접근을 나타내는 예외
(클래스)
예상치 못한 값을 포함하는 expected 에 대한 검사된 접근을 나타내는 예외
(클래스 템플릿)