diff --git a/src/entt/entity/view.hpp b/src/entt/entity/view.hpp index 833910b6b..c0bcebeb3 100644 --- a/src/entt/entity/view.hpp +++ b/src/entt/entity/view.hpp @@ -648,7 +648,7 @@ public: /*! @brief Random access iterator type. */ using iterator = typename common_type::iterator; /*! @brief Reverse iterator type. */ - using reverse_iterator = typename common_type::reverse_iterator; + using reverse_iterator = std::conditional_t; /** * @brief Returns the leading storage of a view, if any. @@ -720,19 +720,23 @@ public: * * If the view is empty, the returned iterator will be equal to `rend()`. * + * @tparam Pol Dummy template parameter used for sfinae purposes only. * @return An iterator to the first entity of the reversed view. */ - [[nodiscard]] reverse_iterator rbegin() const noexcept { + template + [[nodiscard]] std::enable_if_t rbegin() const noexcept { return leading ? leading->rbegin() : reverse_iterator{}; } /** * @brief Returns an iterator that is past the last entity of the reversed * view. + * @tparam Pol Dummy template parameter used for sfinae purposes only. * @return An iterator to the entity following the last entity of the * reversed view. */ - [[nodiscard]] reverse_iterator rend() const noexcept { + template + [[nodiscard]] std::enable_if_t rend() const noexcept { if constexpr(Policy == deletion_policy::swap_and_pop) { return leading ? leading->rend() : reverse_iterator{}; } else {