diff --git a/stl/inc/algorithm b/stl/inc/algorithm index ce0a039bb16..25382c06985 100644 --- a/stl/inc/algorithm +++ b/stl/inc/algorithm @@ -638,7 +638,7 @@ _NODISCARD pair<_FwdIt1, _FwdIt2> mismatch( #ifdef __cpp_lib_concepts namespace ranges { - template + template requires indirectly_comparable<_It1, _It2, _Pr, _Pj1, _Pj2> _NODISCARD constexpr bool _Equal_count( _It1 _First1, _It2 _First2, _Size _Count, _Pr _Pred, _Pj1 _Proj1, _Pj2 _Proj2) { diff --git a/tests/std/tests/P0896R4_ranges_alg_equal/test.cpp b/tests/std/tests/P0896R4_ranges_alg_equal/test.cpp index 7a85024c423..3b3487887e6 100644 --- a/tests/std/tests/P0896R4_ranges_alg_equal/test.cpp +++ b/tests/std/tests/P0896R4_ranges_alg_equal/test.cpp @@ -79,6 +79,13 @@ constexpr void smoke_test() { assert(!equal(begin(arr1), unreachable_sentinel, begin(arr2), end(arr2))); assert(!equal(begin(arr1), end(arr1), begin(arr2), unreachable_sentinel)); } +#ifndef _M_CEE // TRANSITION, VSO-1666180 + { + // Validate GH-3550: ": ranges::equal does not work for ranges with integer-class range_difference_t" + auto v = ranges::subrange{std::views::iota(0ull, 10ull)} | std::views::drop(2); + assert(equal(v, v)); + } +#endif // _M_CEE } int main() {