From 53b9ec80a3b7bb7e403a8c7330c0741484b9ba4d Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Fri, 22 Nov 2024 19:04:58 +0100 Subject: Don't force niched values to be move assignable in reset, and fix warnings --- asl/option.hpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'asl/option.hpp') diff --git a/asl/option.hpp b/asl/option.hpp index 6b528b9..f2af9ee 100644 --- a/asl/option.hpp +++ b/asl/option.hpp @@ -123,8 +123,8 @@ public: // NOLINTNEXTLINE(*-explicit-conversions) constexpr option(nullopt_t) requires (!kHasNiche) - : m_has_value{false} - , m_payload{} + : m_payload{} + , m_has_value{false} {} // NOLINTNEXTLINE(*-explicit-conversions) @@ -383,7 +383,18 @@ public: if constexpr (kHasNiche) { - m_payload = T(niche{}); + if constexpr (move_assignable) + { + m_payload = T(niche{}); + } + else + { + if constexpr (!trivially_destructible) + { + (&m_payload)->~T(); + } + new (&m_payload) T(niche{}); + } } else { -- cgit