From 0d2d6e5348cba68b2a340103ccf748f5f153c8ef Mon Sep 17 00:00:00 2001 From: Bananymous Date: Wed, 1 Feb 2023 21:41:51 +0200 Subject: [PATCH] BAN: Fix all emplace functions to actually do perfect forwarding --- BAN/include/BAN/LinkedList.h | 8 ++++---- BAN/include/BAN/Queue.h | 4 ++-- BAN/include/BAN/Vector.h | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/BAN/include/BAN/LinkedList.h b/BAN/include/BAN/LinkedList.h index 2d4ec765b..046c980ab 100644 --- a/BAN/include/BAN/LinkedList.h +++ b/BAN/include/BAN/LinkedList.h @@ -33,9 +33,9 @@ namespace BAN [[nodiscard]] ErrorOr insert(const_iterator, const T&); [[nodiscard]] ErrorOr insert(const_iterator, T&&); template - [[nodiscard]] ErrorOr emplace_back(Args...); + [[nodiscard]] ErrorOr emplace_back(Args&&...); template - [[nodiscard]] ErrorOr emplace(const_iterator, Args...); + [[nodiscard]] ErrorOr emplace(const_iterator, Args&&...); void pop_back(); void remove(const_iterator); @@ -204,14 +204,14 @@ namespace BAN template template - ErrorOr LinkedList::emplace_back(Args... args) + ErrorOr LinkedList::emplace_back(Args&&... args) { return emplace(end(), forward(args)...); } template template - ErrorOr LinkedList::emplace(const_iterator iter, Args... args) + ErrorOr LinkedList::emplace(const_iterator iter, Args&&... args) { Node* next = iter.m_past_end ? nullptr : iter.m_current; Node* prev = next ? next->prev : m_last; diff --git a/BAN/include/BAN/Queue.h b/BAN/include/BAN/Queue.h index f30835007..8f3f9eb01 100644 --- a/BAN/include/BAN/Queue.h +++ b/BAN/include/BAN/Queue.h @@ -27,7 +27,7 @@ namespace BAN [[nodiscard]] ErrorOr push(T&&); [[nodiscard]] ErrorOr push(const T&); template - [[nodiscard]] ErrorOr emplace(Args...); + [[nodiscard]] ErrorOr emplace(Args&&...); void pop(); void clear(); @@ -120,7 +120,7 @@ namespace BAN template template - ErrorOr Queue::emplace(Args... args) + ErrorOr Queue::emplace(Args&&... args) { TRY(ensure_capacity(m_size + 1)); new (address_of(m_size)) T(forward(args)...); diff --git a/BAN/include/BAN/Vector.h b/BAN/include/BAN/Vector.h index 61952ccfd..3c3a2b63d 100644 --- a/BAN/include/BAN/Vector.h +++ b/BAN/include/BAN/Vector.h @@ -73,9 +73,9 @@ namespace BAN [[nodiscard]] ErrorOr push_back(T&&); [[nodiscard]] ErrorOr push_back(const T&); template - [[nodiscard]] ErrorOr emplace_back(Args...); + [[nodiscard]] ErrorOr emplace_back(Args&&...); template - [[nodiscard]] ErrorOr emplace(size_type, Args...); + [[nodiscard]] ErrorOr emplace(size_type, Args&&...); [[nodiscard]] ErrorOr insert(size_type, T&&); [[nodiscard]] ErrorOr insert(size_type, const T&); @@ -187,7 +187,7 @@ namespace BAN template template - ErrorOr Vector::emplace_back(Args... args) + ErrorOr Vector::emplace_back(Args&&... args) { TRY(ensure_capacity(m_size + 1)); new (address_of(m_size)) T(forward(args)...); @@ -197,7 +197,7 @@ namespace BAN template template - ErrorOr Vector::emplace(size_type index, Args... args) + ErrorOr Vector::emplace(size_type index, Args&&... args) { ASSERT(index <= m_size); TRY(ensure_capacity(m_size + 1));