forked from Bananymous/banan-os
BAN: Add Queue::Emplace()
This commit is contained in:
@@ -26,6 +26,8 @@ namespace BAN
|
|||||||
|
|
||||||
[[nodiscard]] ErrorOr<void> Push(T&&);
|
[[nodiscard]] ErrorOr<void> Push(T&&);
|
||||||
[[nodiscard]] ErrorOr<void> Push(const T&);
|
[[nodiscard]] ErrorOr<void> Push(const T&);
|
||||||
|
template<typename... Args>
|
||||||
|
[[nodiscard]] ErrorOr<void> Emplace(Args...);
|
||||||
|
|
||||||
void Pop();
|
void Pop();
|
||||||
void Clear();
|
void Clear();
|
||||||
@@ -116,6 +118,16 @@ namespace BAN
|
|||||||
return Push(Move(T(value)));
|
return Push(Move(T(value)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
template<typename... Args>
|
||||||
|
ErrorOr<void> Queue<T>::Emplace(Args... args)
|
||||||
|
{
|
||||||
|
TRY(EnsureCapacity(m_size + 1));
|
||||||
|
new (AddressOf(m_size)) T(Forward<Args>(args)...);
|
||||||
|
m_size++;
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void Queue<T>::Pop()
|
void Queue<T>::Pop()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user