diff options
author | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2024-08-15 00:58:37 +0200 |
---|---|---|
committer | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2024-08-15 00:58:37 +0200 |
commit | 298ee421d9dcb6af3d29833f4cf636bb088356fb (patch) | |
tree | cd73df4683622283eff23b98d8bf096a8b86b234 /asl/meta_tests.cpp | |
parent | 75b10758ba116eabed730d23e957f1d69a1e3cb8 (diff) |
Some work on pointers
Diffstat (limited to 'asl/meta_tests.cpp')
-rw-r--r-- | asl/meta_tests.cpp | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/asl/meta_tests.cpp b/asl/meta_tests.cpp index f3d31f4..34603e6 100644 --- a/asl/meta_tests.cpp +++ b/asl/meta_tests.cpp @@ -1,5 +1,6 @@ #include "asl/meta.hpp"
+struct EmptyStruct {};
struct Struct { int b: 4; };
union Union {};
@@ -550,15 +551,15 @@ static_assert(asl::is_object<int Struct::*>); static_assert(asl::is_object<int (Struct::*)()>);
static_assert(!asl::is_object<int&>);
static_assert(!asl::is_object<int&&>);
-static_assert(asl::is_object<int[25]>);
-static_assert(asl::is_object<int[]>);
-static_assert(asl::is_object<int*[]>);
+static_assert(!asl::is_object<int[25]>);
+static_assert(!asl::is_object<int[]>);
+static_assert(!asl::is_object<int*[]>);
static_assert(!asl::is_object<int(&)[]>);
static_assert(asl::is_object<int(*)[]>);
-static_assert(asl::is_object<int[]>);
-static_assert(asl::is_object<Struct[4]>);
-static_assert(asl::is_object<Union[]>);
-static_assert(asl::is_object<Enum[]>);
+static_assert(!asl::is_object<int[]>);
+static_assert(!asl::is_object<Struct[4]>);
+static_assert(!asl::is_object<Union[]>);
+static_assert(!asl::is_object<Enum[]>);
static_assert(!asl::is_object<int()>);
static_assert(asl::is_object<Struct>);
static_assert(asl::is_object<const Struct>);
@@ -568,5 +569,29 @@ static_assert(asl::is_object<Union>); static_assert(asl::is_object<Enum>);
static_assert(asl::is_object<EnumClass>);
-int main() { return 0; }
+static_assert(asl::is_empty<void>);
+static_assert(!asl::is_empty<int>);
+static_assert(asl::is_empty<EmptyStruct>);
+static_assert(!asl::is_empty<Union>);
+static_assert(asl::is_empty<asl::empty>);
+
+static_assert(asl::is_same<asl::select_t<false, int, float>, float>);
+static_assert(asl::is_same<asl::select_t<true, int, float>, int>);
+
+static_assert(asl::is_same<asl::devoid_t<int>, int>);
+static_assert(asl::is_same<asl::devoid_t<void>, asl::empty>);
+static_assert(asl::is_same<asl::devoid_t<const void>, asl::empty>);
+static_assert(asl::is_same<asl::tame_t<int(float)>, int(float)>);
+static_assert(asl::is_same<asl::tame_t<int(float) &>, int(float)>);
+static_assert(asl::is_same<asl::tame_t<int(float) const &&>, int(float)>);
+static_assert(asl::is_same<asl::tame_t<int(float) volatile noexcept>, int(float)>);
+static_assert(asl::is_same<asl::tame_t<int(float) const>, int(float)>);
+static_assert(asl::is_same<asl::tame_t<int(float) const volatile & noexcept>, int(float)>);
+
+static_assert(asl::is_same<asl::as_raw_ptr_t<int>, int*>);
+static_assert(asl::is_same<asl::as_raw_ptr_t<const int>, const int*>);
+static_assert(asl::is_same<asl::as_raw_ptr_t<int(float)>, int(*)(float)>);
+static_assert(asl::is_same<asl::as_raw_ptr_t<int&>, int*>);
+
+int main() { return 0; }
|