From 2cc9534570d138cd6db987d42e65467afba7a98d Mon Sep 17 00:00:00 2001 From: Bananymous Date: Wed, 7 Feb 2024 22:33:16 +0200 Subject: [PATCH] BAN: Add emplace for Variant This allows variant to store values that are not copy/move constructible. --- BAN/include/BAN/Variant.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/BAN/include/BAN/Variant.h b/BAN/include/BAN/Variant.h index 71b2107d..cdc9d0bb 100644 --- a/BAN/include/BAN/Variant.h +++ b/BAN/include/BAN/Variant.h @@ -216,6 +216,14 @@ namespace BAN return m_index == detail::index(); } + template + void emplace(Args&&... args) requires (can_have()) + { + clear(); + m_index = detail::index(); + new (m_storage) T(BAN::forward(args)...); + } + template void set(T&& value) requires (can_have() && !is_lvalue_reference_v) {