summaryrefslogtreecommitdiff
path: root/asl
diff options
context:
space:
mode:
authorSteven Le Rouzic <steven.lerouzic@gmail.com>2024-08-15 01:08:06 +0200
committerSteven Le Rouzic <steven.lerouzic@gmail.com>2024-08-15 01:08:06 +0200
commit03e5d14ed191a5a600c7b9f6c33bb2b12fdd5eac (patch)
treec44ca6b5ebc5affe2cbbb5f1b19fb1f74dbedf1a /asl
parent298ee421d9dcb6af3d29833f4cf636bb088356fb (diff)
Start work on object
Diffstat (limited to 'asl')
-rw-r--r--asl/object.hpp7
-rw-r--r--asl/object_tests.cpp13
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; }