From 58bb86fd2f0ecd740fc5bc8078de44221c12c70a Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Fri, 22 Nov 2024 17:13:03 +0100 Subject: Add a niche to box --- asl/box.hpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'asl/box.hpp') diff --git a/asl/box.hpp b/asl/box.hpp index d8ccd36..7556d76 100644 --- a/asl/box.hpp +++ b/asl/box.hpp @@ -16,15 +16,18 @@ class box ASL_NO_UNIQUE_ADDRESS Allocator m_alloc; public: - explicit constexpr box(T* ptr = nullptr) + explicit constexpr box(niche) requires default_constructible - : m_ptr{ptr} + : m_ptr{nullptr} + , m_alloc{} {} - + constexpr box(T* ptr, Allocator alloc) : m_ptr{ptr} , m_alloc{ASL_MOVE(alloc)} - {} + { + ASL_ASSERT(m_ptr != nullptr); + } constexpr box(box&& other) : m_ptr{exchange(other.m_ptr, nullptr)} @@ -77,6 +80,11 @@ public: ASL_ASSERT(m_ptr != nullptr); return m_ptr; } + + constexpr bool operator==(niche) const + { + return m_ptr == nullptr; + } }; template -- cgit