diff options
Diffstat (limited to 'asl/base')
-rw-r--r-- | asl/base/meta.hpp | 2 | ||||
-rw-r--r-- | asl/base/meta_tests.cpp | 10 |
2 files changed, 12 insertions, 0 deletions
diff --git a/asl/base/meta.hpp b/asl/base/meta.hpp index 3675df3..e050e69 100644 --- a/asl/base/meta.hpp +++ b/asl/base/meta.hpp @@ -146,6 +146,8 @@ struct _copy_const_helper<From, To, true> { using type = const To; }; template<typename From, typename To> using copy_cref_t = _copy_ref_helper<From, typename _copy_const_helper<From, un_cvref_t<To>>::type>::type; +template<typename From, typename To> using copy_const_t = _copy_const_helper<From, un_cvref_t<To>>::type; + template<typename T> struct _is_ptr_helper : false_type {}; template<typename T> struct _is_ptr_helper<T*> : true_type {}; diff --git a/asl/base/meta_tests.cpp b/asl/base/meta_tests.cpp index 7bae295..36b0429 100644 --- a/asl/base/meta_tests.cpp +++ b/asl/base/meta_tests.cpp @@ -274,6 +274,7 @@ static_assert(asl::same_or_derived_from<int, int>); static_assert(!asl::is_const<int>); static_assert(asl::is_const<const int>); static_assert(!asl::is_const<const int*>); +static_assert(!asl::is_const<const int&>); static_assert(asl::is_const<int* const>); static_assert(asl::is_floating_point<float>); @@ -362,6 +363,15 @@ static_assert(asl::same_as<asl::copy_cref_t<const int&, const float>, const floa static_assert(asl::same_as<asl::copy_cref_t<const int&, float&&>, const float&>); static_assert(asl::same_as<asl::copy_cref_t<const int&, const float&>, const float&>); +static_assert(asl::same_as<asl::copy_const_t<int, float>, float>); +static_assert(asl::same_as<asl::copy_const_t<int, const float>, float>); + +static_assert(asl::same_as<asl::copy_const_t<const int, float>, const float>); +static_assert(asl::same_as<asl::copy_const_t<const int, const float>, const float>); + +static_assert(asl::same_as<asl::copy_const_t<const int*, float>, float>); +static_assert(asl::same_as<asl::copy_const_t<int* const, float>, const float>); + static_assert(asl::same_as<asl::decay_t<int>, int>); static_assert(!asl::same_as<asl::decay_t<int>, float>); static_assert(asl::same_as<asl::decay_t<int&>, int>); |