std::get_if (std::variant)
cppreference.net에서 가져옴
| 헤더 <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!
참고 항목
|
(C++17)
|
인덱스나 타입(타입이 고유한 경우)이 주어졌을 때 variant의 값을 읽으며, 오류 발생 시 예외를 발생시킴
(함수 템플릿) |