diff --git a/deps/ox/src/ox/std/vector.hpp b/deps/ox/src/ox/std/vector.hpp index 2bb6008f..87033fda 100644 --- a/deps/ox/src/ox/std/vector.hpp +++ b/deps/ox/src/ox/std/vector.hpp @@ -221,6 +221,12 @@ class Vector: detail::VectorAllocator { constexpr const T &operator[](std::size_t i) const noexcept; + [[nodiscard]] + constexpr Result at(size_t i) noexcept; + + [[nodiscard]] + constexpr Result at(size_t i) const noexcept; + [[nodiscard]] constexpr Result front() noexcept; @@ -416,6 +422,22 @@ constexpr const T &Vector::operator[](std::size_t return m_items[i]; } +template +constexpr Result Vector::at(size_t i) noexcept { + if (i < size()) { + return &operator[](i); + } + return OxError(1, "Vector: Invalid index"); +} + +template +constexpr Result Vector::at(size_t i) const noexcept { + if (i < size()) { + return &operator[](i); + } + return OxError(1, "Vector: Invalid index"); +} + template constexpr Result Vector::front() noexcept { if (!m_size) {