Lines Matching full:variant
14 variant synopsis
18 // 20.7.2, class template variant
20 class variant {
24 constexpr variant() noexcept(see below);
25 constexpr variant(const variant&);
26 constexpr variant(variant&&) noexcept(see below);
28 template <class T> constexpr variant(T&&) noexcept(see below);
31 constexpr explicit variant(in_place_type_t<T>, Args&&...);
34 constexpr explicit variant(
38 constexpr explicit variant(in_place_index_t<I>, Args&&...);
41 constexpr explicit variant(
45 constexpr ~variant(); // constexpr since c++20
48 constexpr variant& operator=(const variant&);
49 constexpr variant& operator=(variant&&) noexcept(see below);
52 constexpr variant& operator=(T&&) noexcept(see below); // constexpr since c++20
62 constexpr variant_alternative_t<I, variant>& emplace(Args&&...); // constexpr since c++20
65 constexpr variant_alternative_t<I, variant>&
73 void swap(variant&) noexcept(see below);
75 // [variant.visit], visitation
82 // 20.7.3, variant helper classes
93 struct variant_size<variant<Types...>>;
105 struct variant_alternative<I, variant<Types...>>;
111 constexpr bool holds_alternative(const variant<Types...>&) noexcept;
114 constexpr variant_alternative_t<I, variant<Types...>>&
115 get(variant<Types...>&);
118 constexpr variant_alternative_t<I, variant<Types...>>&&
119 get(variant<Types...>&&);
122 constexpr variant_alternative_t<I, variant<Types...>> const&
123 get(const variant<Types...>&);
126 constexpr variant_alternative_t<I, variant<Types...>> const&&
127 get(const variant<Types...>&&);
130 constexpr T& get(variant<Types...>&);
133 constexpr T&& get(variant<Types...>&&);
136 constexpr const T& get(const variant<Types...>&);
139 constexpr const T&& get(const variant<Types...>&&);
142 constexpr add_pointer_t<variant_alternative_t<I, variant<Types...>>>
143 get_if(variant<Types...>*) noexcept;
146 constexpr add_pointer_t<const variant_alternative_t<I, variant<Types...>>>
147 get_if(const variant<Types...>*) noexcept;
151 get_if(variant<Types...>*) noexcept;
155 get_if(const variant<Types...>*) noexcept;
159 constexpr bool operator==(const variant<Types...>&, const variant<Types...>&);
162 constexpr bool operator!=(const variant<Types...>&, const variant<Types...>&);
165 constexpr bool operator<(const variant<Types...>&, const variant<Types...>&);
168 constexpr bool operator>(const variant<Types...>&, const variant<Types...>&);
171 constexpr bool operator<=(const variant<Types...>&, const variant<Types...>&);
174 constexpr bool operator>=(const variant<Types...>&, const variant<Types...>&);
178 operator<=>(const variant<Types...>&, const variant<Types...>&); // since C++20
201 void swap(variant<Types...>&, variant<Types...>&) noexcept(see below);
208 template <class... Types> struct hash<variant<Types...>>;
266 // [variant.syn]
309 class _LIBCPP_TEMPLATE_VIS variant;
327 struct _LIBCPP_TEMPLATE_VIS variant_size<variant<_Types...>> : integral_constant<size_t, sizeof...(…
345 struct _LIBCPP_TEMPLATE_VIS variant_alternative<_Ip, variant<_Types...>> {
371 class _LIBCPP_TEMPLATE_VIS variant;
374 _LIBCPP_HIDE_FROM_ABI constexpr variant<_Types...>& __as_variant(variant<_Types...>& __vs) noexcept…
379 _LIBCPP_HIDE_FROM_ABI constexpr const variant<_Types...>& __as_variant(const variant<_Types...>& __…
384 _LIBCPP_HIDE_FROM_ABI constexpr variant<_Types...>&& __as_variant(variant<_Types...>&& __vs) noexce…
389 _LIBCPP_HIDE_FROM_ABI constexpr const variant<_Types...>&& __as_variant(const variant<_Types...>&& …
1167 class _LIBCPP_TEMPLATE_VIS _LIBCPP_DECLSPEC_EMPTY_BASES variant
1173 static_assert(0 < sizeof...(_Types), "variant must consist of at least one alternative.");
1175 …static_assert(__all<!is_array_v<_Types>...>::value, "variant can not have an array type as an alte…
1177 …static_assert(__all<!is_reference_v<_Types>...>::value, "variant can not have a reference type as …
1179 …static_assert(__all<!is_void_v<_Types>...>::value, "variant can not have a void type as an alterna…
1181 using __first_type = variant_alternative_t<0, variant>;
1185 conditional_t<_And<__libcpp_is_trivially_relocatable<_Types>...>::value, variant, void>;
1189 …_LIBCPP_HIDE_FROM_ABI constexpr variant() noexcept(is_nothrow_default_constructible_v<__first_type…
1192 _LIBCPP_HIDE_FROM_ABI constexpr variant(const variant&) = default;
1193 _LIBCPP_HIDE_FROM_ABI constexpr variant(variant&&) = default;
1196 enable_if_t<!is_same_v<__remove_cvref_t<_Arg>, variant>, int> = 0,
1202 …_LIBCPP_HIDE_FROM_ABI constexpr variant(_Arg&& __arg) noexcept(is_nothrow_constructible_v<_Tp, _Ar…
1208 …ass _Tp = variant_alternative_t<_Ip, variant<_Types...>>,
1210 …_LIBCPP_HIDE_FROM_ABI explicit constexpr variant(in_place_index_t<_Ip>, _Args&&... __args) noexcep…
1218 … class _Tp = variant_alternative_t<_Ip, variant<_Types...>>,
1220 _LIBCPP_HIDE_FROM_ABI explicit constexpr variant(
1230 …_LIBCPP_HIDE_FROM_ABI explicit constexpr variant(in_place_type_t<_Tp>, _Args&&... __args) noexcept(
1239 _LIBCPP_HIDE_FROM_ABI explicit constexpr variant(
1245 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 ~variant() = default;
1247 _LIBCPP_HIDE_FROM_ABI constexpr variant& operator=(const variant&) = default;
1248 _LIBCPP_HIDE_FROM_ABI constexpr variant& operator=(variant&&) = default;
1251 enable_if_t<!is_same_v<__remove_cvref_t<_Arg>, variant>, int> = 0,
1255 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 variant&
1264 …ass _Tp = variant_alternative_t<_Ip, variant<_Types...>>,
1274 … class _Tp = variant_alternative_t<_Ip, variant<_Types...>>,
1307 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void swap(variant& __that) noexcept(
1313 // Helper class to implement [variant.visit]/10
1322 using _VariantT = _OverrideRef<_Self&&, _CopyConst<remove_reference_t<_Self>, variant>>;
1328 using _VariantT = _OverrideRef<_Self&&, _CopyConst<remove_reference_t<_Self>, variant>>;
1341 _LIBCPP_HIDE_FROM_ABI constexpr bool __holds_alternative(const variant<_Types...>& __v) noexcept {
1346 _LIBCPP_HIDE_FROM_ABI constexpr bool holds_alternative(const variant<_Types...>& __v) noexcept {
1361 _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr variant_alternative_t<_Ip, variant<_Types..…
1362 get(variant<_Types...>& __v) {
1364 static_assert(!is_void_v<variant_alternative_t<_Ip, variant<_Types...>>>);
1370 _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr variant_alternative_t<_Ip, variant<_Types..…
1371 get(variant<_Types...>&& __v) {
1373 static_assert(!is_void_v<variant_alternative_t<_Ip, variant<_Types...>>>);
1379 _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr const variant_alternative_t<_Ip, variant<_T…
1380 get(const variant<_Types...>& __v) {
1382 static_assert(!is_void_v<variant_alternative_t<_Ip, variant<_Types...>>>);
1388 _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr const variant_alternative_t<_Ip, variant<_T…
1389 get(const variant<_Types...>&& __v) {
1391 static_assert(!is_void_v<variant_alternative_t<_Ip, variant<_Types...>>>);
1396 _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr _Tp& get(variant<_Typ…
1402 _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr _Tp&& get(variant<_Ty…
1409 get(const variant<_Types...>& __v) {
1416 get(const variant<_Types...>&& __v) {
1428 _LIBCPP_HIDE_FROM_ABI constexpr add_pointer_t<variant_alternative_t<_Ip, variant<_Types...>>>
1429 get_if(variant<_Types...>* __v) noexcept {
1431 static_assert(!is_void_v<variant_alternative_t<_Ip, variant<_Types...>>>);
1436 _LIBCPP_HIDE_FROM_ABI constexpr add_pointer_t<const variant_alternative_t<_Ip, variant<_Types...>>>
1437 get_if(const variant<_Types...>* __v) noexcept {
1439 static_assert(!is_void_v<variant_alternative_t<_Ip, variant<_Types...>>>);
1444 _LIBCPP_HIDE_FROM_ABI constexpr add_pointer_t<_Tp> get_if(variant<_Types...>* __v) noexcept {
1450 _LIBCPP_HIDE_FROM_ABI constexpr add_pointer_t<const _Tp> get_if(const variant<_Types...>* __v) noex…
1466 _LIBCPP_HIDE_FROM_ABI constexpr bool operator==(const variant<_Types...>& __lhs, const variant<_Typ…
1480 operator<=>(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) {
1498 _LIBCPP_HIDE_FROM_ABI constexpr bool operator!=(const variant<_Types...>& __lhs, const variant<_Typ…
1508 _LIBCPP_HIDE_FROM_ABI constexpr bool operator<(const variant<_Types...>& __lhs, const variant<_Type…
1522 _LIBCPP_HIDE_FROM_ABI constexpr bool operator>(const variant<_Types...>& __lhs, const variant<_Type…
1536 _LIBCPP_HIDE_FROM_ABI constexpr bool operator<=(const variant<_Types...>& __lhs, const variant<_Typ…
1550 _LIBCPP_HIDE_FROM_ABI constexpr bool operator>=(const variant<_Types...>& __lhs, const variant<_Typ…
1591 swap(variant<_Types...>& __lhs,
1592 … variant<_Types...>& __rhs) noexcept(noexcept(__lhs.swap(__rhs))) -> decltype(__lhs.swap(__rhs)) {
1597 struct _LIBCPP_TEMPLATE_VIS hash< __enable_hash_helper<variant<_Types...>, remove_const_t<_Types>..…
1598 using argument_type = variant<_Types...>;
1627 _LIBCPP_HIDE_FROM_ABI constexpr auto&& __unchecked_get(const variant<_Types...>& __v) noexcept {
1632 _LIBCPP_HIDE_FROM_ABI constexpr auto&& __unchecked_get(variant<_Types...>& __v) noexcept {