Namespaces
Variants

std::get_if (std::variant)

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)



 
 
헤더 <variant>
template< std::size_t I, class... Types >
constexpr std::add_pointer_t<std::variant_alternative_t<I, std::variant<Types...>>>
    get_if( std::variant<Types...>* pv ) noexcept;
에 정의됨 (1)
template< std::size_t I, class... Types >
constexpr std::add_pointer_t<const std::variant_alternative_t<I, std::variant<Types...>>>
    get_if( const std::variant<Types...>* pv ) noexcept;
(C++17부터) (2)
template< class T, class... Types >
constexpr std::add_pointer_t<T>
    get_if( std::variant<Types...>* pv ) noexcept;
(C++17부터) (3)
template< class T, class... Types >
constexpr std::add_pointer_t<const T>
    get_if( const std::variant<Types...>* pv ) noexcept;
(C++17부터) (4)
(C++17부터)1,2)pv 인덱스 기반 비예외 접근자: pv->index() == I이 널 포인터가 아니고 pv인 경우, I이 가리키는 variant에 저장된 값에 대한 포인터를 반환합니다. 그렇지 않으면 널 포인터 값을 반환합니다.
이 variant에서 유효한 인덱스가 아니면 호출은 ill-formed입니다.3,4) 타입 기반 비예외 접근자: 다음과 동일합니다: (1)I 여기서 T는 Types...에서 T의 0부터 시작하는 인덱스입니다. Types...이

템플릿 매개변수

I - 조회할 인덱스
Type - 조회할 고유 타입

매개변수

pv - variant을 가리키는 포인터

반환값

가리키는 variant에 저장된 값에 대한 포인터 또는 오류 시 널 포인터.

예제

#include <iostream>
#include <variant>
int main()
{
    auto check_value = [](const std::variant<int, float>& v)
    {
        if (const int* pval = std::get_if<int>(&v))
            std::cout << "variant value: " << *pval << '\n';
        else
            std::cout << "failed to get value!" << '\n';
    };
    std::variant<int, float> v{12}, w{3.f};
    check_value(v);
    check_value(w);
}

출력:

variant value: 12
failed to get value!

참고 항목

인덱스나 타입(타입이 고유한 경우)이 주어졌을 때 variant의 값을 읽으며, 오류 발생 시 예외를 발생시킴
(함수 템플릿)