|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Observers | ||||
| Modifiers | ||||
| Visitation | ||||
(C++26) | ||||
| Non-member functions | ||||
get(std::variant) | ||||
| Helper classes | ||||
| Helper objects | ||||
Defined in header <variant> | ||
| (1) | (since C++17) | |
template<std::size_t I,class...Types> constexprstd::variant_alternative_t<I,std::variant<Types...>>& | ||
template<std::size_t I,class...Types> constexprstd::variant_alternative_t<I,std::variant<Types...>>&& | ||
template<std::size_t I,class...Types> constexprconststd::variant_alternative_t<I,std::variant<Types...>>& | ||
template<std::size_t I,class...Types> constexprconststd::variant_alternative_t<I,std::variant<Types...>>&& | ||
| (2) | (since C++17) | |
template<class T,class...Types> constexpr T& get(std::variant<Types...>& v); | ||
template<class T,class...Types> constexpr T&& get(std::variant<Types...>&& v); | ||
template<class T,class...Types> constexprconst T& get(conststd::variant<Types...>& v); | ||
template<class T,class...Types> constexprconst T&& get(conststd::variant<Types...>&& v); | ||
I is not a valid index in the variant.T, returns a reference to the value stored inv. Otherwise, throwsstd::bad_variant_access. The call is ill-formed ifT is not a unique element ofTypes....Contents |
| I | - | index to look up |
| T | - | unique type to look up |
| Types... | - | types forming thevariant |
| v | - | avariant |
Reference to the value stored in the variant.
#include <iostream>#include <string>#include <variant> int main(){std::variant<int,float> v{12}, w;std::cout<< std::get<int>(v)<<'\n'; w= std::get<int>(v); w= std::get<0>(v);// same effect as the previous line // std::get<double>(v); // error: no double in [int, float]// std::get<3>(v); // error: valid index values are 0 and 1 try{ w=42.0f;std::cout<< std::get<float>(w)<<'\n';// ok, prints 42 w=42;std::cout<< std::get<float>(w)<<'\n';// throws}catch(std::bad_variant_accessconst& ex){std::cout<< ex.what()<<": w contained int, not float\n";}}
Possible output:
1242Unexpected index: w contained int, not float
(C++17) | obtains a pointer to the value of a pointed-tovariant given the index or the type (if unique), returns null on error(function template)[edit] |
(C++11) | tuple accesses specified element (function template)[edit] |
(C++11) | accesses an element of anarray(function template)[edit] |
(C++11) | accesses an element of apair(function template)[edit] |
(C++20) | obtains iterator or sentinel from astd::ranges::subrange (function template)[edit] |
(C++26) | obtains a reference to real or imaginary part from astd::complex (function template)[edit] |