forked from Bananymous/banan-os
BAN: Add Queue::Emplace()
This commit is contained in:
parent
1340e26148
commit
59fa4055a6
|
@ -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()
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue