VCCC  2024.05
VisualCamp Common C++ library
variant_size.hpp
Go to the documentation of this file.
1 //
2 // Created by YongGyu Lee on 02/01/24.
3 //
4 
5 #ifndef VCCC_VARIANT_VARIANT_SIZE_HPP
6 #define VCCC_VARIANT_VARIANT_SIZE_HPP
7 
8 #include <type_traits>
9 
11 
12 namespace vccc {
13 
16 
18 template<typename... T>
19 class variant;
21 
22 template<typename T>
23 struct variant_size;
24 
25 template<typename... Ts>
26 struct variant_size<variant<Ts...>> : std::integral_constant<std::size_t, sizeof...(Ts)> {};
27 
28 template<typename T>
29 struct variant_size<const T> : std::integral_constant<std::size_t, variant_size<T>::value> {};
30 
31 template<typename T>
33 
35 
36 } // namespace vccc
37 
38 #endif // VCCC_VARIANT_VARIANT_SIZE_HPP
a type-safe discriminated union
Definition: variant.hpp:589
constexpr VCCC_INLINE_OR_STATIC std::size_t variant_size_v
Definition: variant_size.hpp:32
#define VCCC_INLINE_OR_STATIC
Definition: inline_or_static.hpp:9
Definition: directory.h:12
Definition: variant_size.hpp:23