|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined in header <variant> | ||
template<class T> struct variant_size;/* undefined */ | (1) | (since C++17) |
template<class...Types> struct variant_size<std::variant<Types...>> | (2) | (since C++17) |
template<class T> class variant_size<const T>; | (3) | (since C++17) |
template<class T> class variant_size<volatile T>; | (4) | (since C++17) (deprecated in C++20) |
template<class T> class variant_size<constvolatile T>; | (5) | (since C++17) (deprecated in C++20) |
Provides access to the number of alternatives in a possibly cv-qualified variant as a compile-time constant expression.
Formally,
Contents |
template<class T> constexprstd::size_t variant_size_v= std::variant_size<T>::value; | (since C++17) | |
value [static] | sizeof...(Types)(public static member constant) |
operator std::size_t | converts the object tostd::size_t, returnsvalue (public member function) |
operator() (C++14) | returnsvalue (public member function) |
| Type | Definition |
value_type | std::size_t |
type | std::integral_constant<std::size_t, value> |
All specializations ofstd::variant_size satisfyUnaryTypeTrait withbase characteristicstd::integral_constant<std::size_t, N> for someN.
#include <any>#include <variant> static_assert(std::variant_size_v<std::variant<>>==0);static_assert(std::variant_size_v<std::variant<int>>==1);static_assert(std::variant_size_v<std::variant<int,int>>==2);static_assert(std::variant_size_v<std::variant<int,int,int>>==3);static_assert(std::variant_size_v<std::variant<int,float,double>>==3);static_assert(std::variant_size_v<std::variant<std::monostate,void>>==2);static_assert(std::variant_size_v<std::variant<constint,constfloat>>==2);static_assert(std::variant_size_v<std::variant<std::variant<std::any>>>==1); int main(){}
| obtains the type of the alternative specified by its index, at compile time (class template)(alias template)[edit] | |
(C++11) | obtains the size of a |