diff --git a/src/entt/entity/view.hpp b/src/entt/entity/view.hpp index 9601b13f7..6a9d2ebc2 100644 --- a/src/entt/entity/view.hpp +++ b/src/entt/entity/view.hpp @@ -423,11 +423,15 @@ public: * otherwise. */ [[nodiscard]] entity_type back() const noexcept { + if(view) { auto it = view->rbegin(); for(const auto last = view->rend(); it != last && !contains(*it); ++it) {} return it == view->rend() ? null : *it; } + return null; + } + /** * @brief Finds an entity. * @param entt A valid identifier. diff --git a/test/entt/entity/view.cpp b/test/entt/entity/view.cpp index 7fb0ac917..7b6175e4f 100644 --- a/test/entt/entity/view.cpp +++ b/test/entt/entity/view.cpp @@ -632,6 +632,10 @@ TEST(MultiComponentView, InvalidView) { ASSERT_EQ(view.size_hint(), 0u); ASSERT_FALSE(view.contains(entt::null)); + ASSERT_EQ(view.find(entt::null), view.end()); + + ASSERT_EQ(view.front(), static_cast(entt::null)); + ASSERT_EQ(view.back(), static_cast(entt::null)); ASSERT_EQ(view.begin(), typename decltype(view)::iterator{}); ASSERT_EQ(view.begin(), view.end());