diff options
-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; }
|