Explorar el Código

feat(c++): add remove_cv, decay

greatbridf hace 2 años
padre
commit
41b56ecb26
Se han modificado 1 ficheros con 26 adiciones y 0 borrados
  1. 26 0
      include/types/cplusplus.hpp

+ 26 - 0
include/types/cplusplus.hpp

@@ -48,6 +48,32 @@ struct add_reference {
     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 {