From 671fa54f6f3f16f4772353bb0b12cfe09dd2fd92 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Wed, 10 Sep 2025 23:47:36 -0500 Subject: [PATCH] [ox/std] Make ox::Vector::push_back comply with std::vector::push_back --- deps/ox/src/ox/std/vector.hpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) 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); }