Browse Source

feat(c++): add remove_cv, decay

greatbridf 2 years ago
parent
commit
41b56ecb26
1 changed files with 26 additions and 0 deletions
  1. 26 0
      include/types/cplusplus.hpp

+ 26 - 0
include/types/cplusplus.hpp

@@ -48,6 +48,32 @@ struct add_reference {
     using type = T&;
     using type = T&;
 };
 };
 
 
+template <typename T>
+struct remove_cv {
+    using type = T;
+};
+template <typename T>
+struct remove_cv<const T> {
+    using type = T;
+};
+template <typename T>
+struct remove_cv<volatile T> {
+    using type = T;
+};
+template <typename T>
+struct remove_cv<const volatile T> {
+    using type = T;
+};
+
+template <typename T>
+struct decay {
+private:
+    using U = remove_reference<T>;
+
+public:
+    using type = typename remove_cv<U>::type;
+};
+
 } // namespace types::traits
 } // namespace types::traits
 
 
 namespace types {
 namespace types {