diff --git a/deps/ox/src/ox/std/vector.hpp b/deps/ox/src/ox/std/vector.hpp index 97d694cc..61260911 100644 --- a/deps/ox/src/ox/std/vector.hpp +++ b/deps/ox/src/ox/std/vector.hpp @@ -271,7 +271,9 @@ class Vector: detail::VectorAllocator { template constexpr T &emplace_back(Args&&... args) noexcept(useNoexcept); - constexpr void push_back(T item) noexcept(useNoexcept); + constexpr void push_back(T const &item) noexcept(useNoexcept); + + constexpr void push_back(T &&item) noexcept(useNoexcept); constexpr void pop_back() noexcept(useNoexcept); @@ -601,7 +603,16 @@ constexpr T &Vector::emplace_back(Args&&... args) } template -constexpr void Vector::push_back(T item) noexcept(useNoexcept) { +constexpr void Vector::push_back(T const &item) noexcept(useNoexcept) { + if (m_size == m_cap) { + reserve(m_cap ? m_cap * 2 : initialCap); + } + std::construct_at(&m_items[m_size], item); + ++m_size; +} + +template +constexpr void Vector::push_back(T &&item) noexcept(useNoexcept) { if (m_size == m_cap) { reserve(m_cap ? m_cap * 2 : initialCap); }