diff options
author | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2024-08-15 01:08:06 +0200 |
---|---|---|
committer | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2024-08-15 01:08:06 +0200 |
commit | 03e5d14ed191a5a600c7b9f6c33bb2b12fdd5eac (patch) | |
tree | c44ca6b5ebc5affe2cbbb5f1b19fb1f74dbedf1a /asl | |
parent | 298ee421d9dcb6af3d29833f4cf636bb088356fb (diff) |
Start work on object
Diffstat (limited to 'asl')
-rw-r--r-- | asl/object.hpp | 7 | ||||
-rw-r--r-- | asl/object_tests.cpp | 13 |
2 files changed, 20 insertions, 0 deletions
diff --git a/asl/object.hpp b/asl/object.hpp index 17e9ce4..936cd25 100644 --- a/asl/object.hpp +++ b/asl/object.hpp @@ -1,10 +1,17 @@ #pragma once
+#include "asl/ptr.hpp"
+
namespace asl {
template<typename T>
class object final
{
+ using wrapped = devoid_t<un_qual_t<typename ptr<T>::pointee>>;
+
+ ASL_NO_UNIQUE_ADDRESS wrapped m_value;
+
+public:
};
} // namespace asl
diff --git a/asl/object_tests.cpp b/asl/object_tests.cpp index 2f38372..794c540 100644 --- a/asl/object_tests.cpp +++ b/asl/object_tests.cpp @@ -1 +1,14 @@ +#include "asl/object.hpp"
+
+static_assert(asl::is_object<asl::object<void>>);
+static_assert(asl::is_object<asl::object<int>>);
+static_assert(asl::is_object<asl::object<int&>>);
+static_assert(asl::is_object<asl::object<int()>>);
+
+static_assert(asl::is_empty<asl::object<void>>);
+static_assert(sizeof(asl::object<int>) == 4);
+static_assert(sizeof(asl::object<int*>) == sizeof(void*));
+static_assert(sizeof(asl::object<int&>) == sizeof(void*));
+static_assert(sizeof(asl::object<int()>) == sizeof(void*));
+
int main() { return 0; }
|