summaryrefslogtreecommitdiff
path: root/asl/meta/quals.hpp
blob: 9671043636440615d9547e5aec0f8371bf46c12a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#pragma once

#include "asl/meta/types.hpp"
#include "asl/meta/funcs.hpp"
#include "asl/meta/refs.hpp"
#include "asl/meta/internal/quals.hpp"

namespace asl {
    
template<typename T> concept is_const = internal::is_const<T>;
template<typename T> concept is_volatile = !is_any_ref<T> && !is_func<T> && same<T, typename internal::volatile_helper<T>::add>;

template<typename T> using as_const_t = internal::const_helper<T>::add;
template<typename T> using un_const_t = internal::const_helper<T>::remove;

template<typename T> using as_volatile_t = internal::volatile_helper<T>::add;
template<typename T> using un_volatile_t = internal::volatile_helper<T>::remove;

template<typename T> using un_qual_t = un_volatile_t<un_const_t<T>>;

} // namespace asl