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