VCCC  2024.05
VisualCamp Common C++ library
variant_alternative.hpp
Go to the documentation of this file.
1 //
2 // Created by YongGyu Lee on 11/3/23.
3 //
4 
5 #ifndef VCCC_VARIANT_VARIANT_ALTERNATIVE_HPP
6 #define VCCC_VARIANT_VARIANT_ALTERNATIVE_HPP
7 
8 #include <cstddef>
9 #include <type_traits>
10 
12 
13 namespace vccc {
14 
19 
21 template<typename... Types>
22 class variant;
24 
25 template<std::size_t, typename T>
27 
28 template <std::size_t I, class T>
30 
31 template<std::size_t I, typename T>
32 struct variant_alternative<I, const T> {
33  using type = std::add_const_t<variant_alternative_t<I, T>>;
34 };
35 
36 template<std::size_t I, typename... Types>
37 struct variant_alternative<I, variant<Types...>>
38  : type_sequence_element_type<I, type_sequence<Types...>> {};
39 
42 
43 } // namespace vccc
44 
45 #endif // VCCC_VARIANT_VARIANT_ALTERNATIVE_HPP
a type-safe discriminated union
Definition: variant.hpp:589
typename variant_alternative< I, T >::type variant_alternative_t
Definition: variant_alternative.hpp:29
Definition: directory.h:12
get type of -th element of type_sequence
Definition: type_sequence.hpp:92
std::add_const_t< variant_alternative_t< I, T > > type
Definition: variant_alternative.hpp:33
Definition: variant_alternative.hpp:26