浏览代码

feat(c++): add remove_cv, decay

greatbridf 2 年之前
父节点
当前提交
41b56ecb26
共有 1 个文件被更改,包括 26 次插入0 次删除
  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 {