summaryrefslogtreecommitdiff
path: root/asl
diff options
context:
space:
mode:
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; }