@@ -302,6 +302,8 @@ class basic_common_view {
302302 using entity_type = typename Type::entity_type;
303303 /* ! @brief Unsigned integer type. */
304304 using size_type = std::size_t ;
305+ /* ! @brief Signed integer type. */
306+ using difference_type = std::ptrdiff_t ;
305307 /* ! @brief Forward iterator type. */
306308 using iterator = internal::view_iterator<common_type, Checked, Get, Exclude>;
307309
@@ -339,7 +341,7 @@ class basic_common_view {
339341 * @return An iterator to the first entity of the view.
340342 */
341343 [[nodiscard]] iterator begin () const noexcept {
342- return (index != Get) ? iterator{pools[index]->end () - static_cast <typename iterator:: difference_type>(offset ()), pools, filter, index} : iterator{};
344+ return (index != Get) ? iterator{pools[index]->end () - static_cast <difference_type>(offset ()), pools, filter, index} : iterator{};
343345 }
344346
345347 /* *
@@ -368,7 +370,7 @@ class basic_common_view {
368370 [[nodiscard]] entity_type back () const noexcept {
369371 if (index != Get) {
370372 auto it = pools[index]->rbegin ();
371- const auto last = it + static_cast <typename iterator:: difference_type>(offset ());
373+ const auto last = it + static_cast <difference_type>(offset ());
372374 for (; it != last && !(internal::all_of (pools.begin (), pools.begin () + index, *it) && internal::all_of (pools.begin () + index + 1 , pools.end (), *it) && internal::none_of (filter.begin (), filter.end (), *it)); ++it) {}
373375 return it == last ? null : *it;
374376 }
@@ -477,6 +479,8 @@ class basic_view<get_t<Get...>, exclude_t<Exclude...>, std::enable_if_t<(sizeof.
477479 using entity_type = typename base_type::entity_type;
478480 /* ! @brief Unsigned integer type. */
479481 using size_type = typename base_type::size_type;
482+ /* ! @brief Signed integer type. */
483+ using difference_type = std::ptrdiff_t ;
480484 /* ! @brief Forward iterator type. */
481485 using iterator = typename base_type::iterator;
482486 /* ! @brief Iterable view type. */
@@ -695,6 +699,8 @@ class basic_storage_view {
695699 using entity_type = typename common_type::entity_type;
696700 /* ! @brief Unsigned integer type. */
697701 using size_type = std::size_t ;
702+ /* ! @brief Signed integer type. */
703+ using difference_type = std::ptrdiff_t ;
698704 /* ! @brief Random access iterator type. */
699705 using iterator = std::conditional_t <Policy == deletion_policy::in_place, internal::view_iterator<common_type, true , 1u , 0u >, typename common_type::iterator>;
700706 /* ! @brief Reverse iterator type. */
@@ -759,7 +765,7 @@ class basic_storage_view {
759765 if constexpr (Policy == deletion_policy::swap_and_pop) {
760766 return leading ? leading->begin () : iterator{};
761767 } else if constexpr (Policy == deletion_policy::swap_only) {
762- return leading ? (leading->end () - leading->free_list ()) : iterator{};
768+ return leading ? (leading->end () - static_cast <difference_type>( leading->free_list () )) : iterator{};
763769 } else {
764770 static_assert (Policy == deletion_policy::in_place, " Unexpected storage policy" );
765771 return leading ? iterator{leading->begin (), {leading}, {}, 0u } : iterator{};
@@ -805,7 +811,7 @@ class basic_storage_view {
805811 return leading ? leading->rend () : reverse_iterator{};
806812 } else {
807813 static_assert (Policy == deletion_policy::swap_only, " Unexpected storage policy" );
808- return leading ? (leading->rbegin () + leading->free_list ()) : reverse_iterator{};
814+ return leading ? (leading->rbegin () + static_cast <difference_type>( leading->free_list () )) : reverse_iterator{};
809815 }
810816 }
811817
@@ -818,7 +824,7 @@ class basic_storage_view {
818824 if constexpr (Policy == deletion_policy::swap_and_pop) {
819825 return empty () ? null : *leading->begin ();
820826 } else if constexpr (Policy == deletion_policy::swap_only) {
821- return empty () ? null : *(leading->end () - leading->free_list ());
827+ return empty () ? null : *(leading->end () - static_cast <difference_type>( leading->free_list () ));
822828 } else {
823829 static_assert (Policy == deletion_policy::in_place, " Unexpected storage policy" );
824830 const auto it = begin ();
@@ -913,6 +919,8 @@ class basic_view<get_t<Get>, exclude_t<>>
913919 using entity_type = typename base_type::entity_type;
914920 /* ! @brief Unsigned integer type. */
915921 using size_type = typename base_type::size_type;
922+ /* ! @brief Signed integer type. */
923+ using difference_type = std::ptrdiff_t ;
916924 /* ! @brief Random access iterator type. */
917925 using iterator = typename base_type::iterator;
918926 /* ! @brief Reverse iterator type. */
@@ -1051,7 +1059,7 @@ class basic_view<get_t<Get>, exclude_t<>>
10511059 func ();
10521060 }
10531061 } else {
1054- if (const auto len = base_type::size (); len != 0u ) {
1062+ if (const auto len = static_cast <difference_type>( base_type::size ()) ; len != 0 ) {
10551063 for (auto last = storage ()->end (), first = last - len; first != last; ++first) {
10561064 func (*first);
10571065 }
0 commit comments