Quellcode durchsuchen

Fix getting distance between forward iterators (#195)

WizardIke vor 7 Jahren
Ursprung
Commit
72467b6b9c
1 geänderte Dateien mit 2 neuen und 2 gelöschten Zeilen
  1. 2 2
      src/entt/entity/registry.hpp

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

@@ -497,7 +497,7 @@ public:
     template<typename It>
     template<typename It>
     void create(It first, It last) {
     void create(It first, It last) {
         static_assert(std::is_convertible_v<entity_type, typename std::iterator_traits<It>::value_type>);
         static_assert(std::is_convertible_v<entity_type, typename std::iterator_traits<It>::value_type>);
-        const auto length = size_type(last - first);
+        const auto length = size_type(std::distance(first, last));
         const auto sz = std::min(available, length);
         const auto sz = std::min(available, length);
 
 
         available -= sz;
         available -= sz;
@@ -1335,7 +1335,7 @@ public:
     template<typename It>
     template<typename It>
     entt::runtime_view<Entity> runtime_view(It first, It last) const {
     entt::runtime_view<Entity> runtime_view(It first, It last) const {
         static_assert(std::is_convertible_v<typename std::iterator_traits<It>::value_type, component_type>);
         static_assert(std::is_convertible_v<typename std::iterator_traits<It>::value_type, component_type>);
-        std::vector<const sparse_set<Entity> *> set(last - first);
+        std::vector<const sparse_set<Entity> *> set(std::distance(first, last));
 
 
         std::transform(first, last, set.begin(), [this](const component_type ctype) {
         std::transform(first, last, set.begin(), [this](const component_type ctype) {
             auto it = std::find_if(pools.begin(), pools.end(), [ctype](const auto &pdata) {
             auto it = std::find_if(pools.begin(), pools.end(), [ctype](const auto &pdata) {