VCCC  2024.05
VisualCamp Common C++ library
copy_cvref.hpp
Go to the documentation of this file.
1 //
2 // Created by cosge on 2023-12-03.
3 //
4 
5 #ifndef VCCC_TYPE_TRAITS_COPY_CVREF_HPP_
6 #define VCCC_TYPE_TRAITS_COPY_CVREF_HPP_
7 
8 #include <type_traits>
9 
10 namespace vccc {
11 
14 
15 
21 template<typename From, typename To>
22 struct copy_const {
23  using type = To;
24 };
25 
26 template<typename From, typename To>
27 struct copy_const<const From, To> {
28  using type = std::add_const_t<To>;
29 };
30 
31 template<typename From, typename To>
33 
39 template<typename From, typename To>
40 struct copy_volatile {
41  using type = To;
42 };
43 
44 template<typename From, typename To>
45 struct copy_volatile<volatile From, To> {
46  using type = std::add_volatile_t<To>;
47 };
48 
49 template<typename From, typename To>
51 
57 template<typename From, typename To>
58 struct copy_cv {
60 };
61 
62 template<typename From, typename To>
64 
70 template<typename From, typename To>
72  using type = To;
73 };
74 
75 template<typename From, typename To>
76 struct copy_reference<From&, To> {
77  using type = std::add_lvalue_reference_t<To>;
78 };
79 
80 template<typename From, typename To>
81 struct copy_reference<From&&, To> {
82  using type = std::add_rvalue_reference_t<To>;
83 };
84 
85 template<typename From, typename To>
87 
93 template<typename From, typename To>
94 struct copy_cvref {
96 };
97 
98 template<typename From, typename To>
100 
102 
103 } // namespace vccc
104 
105 #endif // VCCC_TYPE_TRAITS_COPY_CVREF_HPP_
typename copy_cvref< From, To >::type copy_cvref_t
Definition: copy_cvref.hpp:99
typename copy_const< From, To >::type copy_const_t
Definition: copy_cvref.hpp:32
typename copy_reference< From, To >::type copy_reference_t
Definition: copy_cvref.hpp:86
typename copy_volatile< From, To >::type copy_volatile_t
Definition: copy_cvref.hpp:50
typename copy_cv< From, To >::type copy_cv_t
Definition: copy_cvref.hpp:63
Definition: directory.h:12
std::add_const_t< To > type
Definition: copy_cvref.hpp:28
Definition: copy_cvref.hpp:22
To type
Definition: copy_cvref.hpp:23
Definition: copy_cvref.hpp:58
copy_volatile_t< From, copy_const_t< From, To > > type
Definition: copy_cvref.hpp:59
Definition: copy_cvref.hpp:94
copy_reference_t< From, copy_cv_t< From, To > > type
Definition: copy_cvref.hpp:95
std::add_lvalue_reference_t< To > type
Definition: copy_cvref.hpp:77
std::add_rvalue_reference_t< To > type
Definition: copy_cvref.hpp:82
Definition: copy_cvref.hpp:71
To type
Definition: copy_cvref.hpp:72
std::add_volatile_t< To > type
Definition: copy_cvref.hpp:46
Definition: copy_cvref.hpp:40
To type
Definition: copy_cvref.hpp:41