Просмотр исходного кода

view: stable multi type view ::begin/::end functions

Michele Caini 2 лет назад
Родитель
Сommit
1b22809412
2 измененных файлов с 5 добавлено и 2 удалено
  1. 2 2
      src/entt/entity/view.hpp
  2. 3 0
      test/entt/entity/view.cpp

+ 2 - 2
src/entt/entity/view.hpp

@@ -391,7 +391,7 @@ public:
      * @return An iterator to the first entity of the view.
      */
     [[nodiscard]] iterator begin() const noexcept {
-        return iterator{view->begin(), view->end(), opaque_check_set(), filter};
+        return view ? iterator{view->begin(), view->end(), opaque_check_set(), filter} : iterator{};
     }
 
     /**
@@ -404,7 +404,7 @@ public:
      * @return An iterator to the entity following the last entity of the view.
      */
     [[nodiscard]] iterator end() const noexcept {
-        return iterator{view->end(), view->end(), opaque_check_set(), filter};
+        return view ? iterator{view->end(), view->end(), opaque_check_set(), filter} : iterator{};
     }
 
     /**

+ 3 - 0
test/entt/entity/view.cpp

@@ -633,6 +633,9 @@ TEST(MultiComponentView, InvalidView) {
     ASSERT_EQ(view.size_hint(), 0u);
     ASSERT_FALSE(view.contains(entt::null));
 
+    ASSERT_EQ(view.begin(), typename decltype(view)::iterator{});
+    ASSERT_EQ(view.begin(), view.end());
+
     entt::storage<int> storage;
     view.storage(storage);