summaryrefslogtreecommitdiff
path: root/asl/meta/internal/quals.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'asl/meta/internal/quals.hpp')
-rw-r--r--asl/meta/internal/quals.hpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/asl/meta/internal/quals.hpp b/asl/meta/internal/quals.hpp
new file mode 100644
index 0000000..869cc89
--- /dev/null
+++ b/asl/meta/internal/quals.hpp
@@ -0,0 +1,16 @@
+#pragma once
+
+#include "asl/meta/types.hpp"
+
+namespace asl::internal {
+
+template<typename T> struct const_helper { using add = const T; using remove = T; };
+template<typename T> struct const_helper<const T> { using add = const T; using remove = T; };
+
+template<typename T> concept is_const = same<T, typename internal::const_helper<T>::add>;
+
+template<typename T> struct volatile_helper { using add = volatile T; using remove = T; };
+template<typename T> struct volatile_helper<volatile T> { using add = volatile T; using remove = T; };
+
+} // namespace asl::internal
+