diff --git a/BAN/include/BAN/Queue.h b/BAN/include/BAN/Queue.h index 586bfdf34..480552119 100644 --- a/BAN/include/BAN/Queue.h +++ b/BAN/include/BAN/Queue.h @@ -26,6 +26,8 @@ namespace BAN [[nodiscard]] ErrorOr Push(T&&); [[nodiscard]] ErrorOr Push(const T&); + template + [[nodiscard]] ErrorOr Emplace(Args...); void Pop(); void Clear(); @@ -116,6 +118,16 @@ namespace BAN return Push(Move(T(value))); } + template + template + ErrorOr Queue::Emplace(Args... args) + { + TRY(EnsureCapacity(m_size + 1)); + new (AddressOf(m_size)) T(Forward(args)...); + m_size++; + return {}; + } + template void Queue::Pop() {