diff --git a/stl/inc/xutility b/stl/inc/xutility index 988196930f3..a27f3bec069 100644 --- a/stl/inc/xutility +++ b/stl/inc/xutility @@ -5381,15 +5381,6 @@ template constexpr bool _Equal_memcmp_is_safe = _Equal_memcmp_is_safe_helper, remove_const_t<_Iter2>, remove_const_t<_Pr>>; -template -_NODISCARD int _Memcmp_ranges(_CtgIt1 _First1, _CtgIt1 _Last1, _CtgIt2 _First2) { - _STL_INTERNAL_STATIC_ASSERT(sizeof(_Iter_value_t<_CtgIt1>) == sizeof(_Iter_value_t<_CtgIt2>)); - const auto _First1_ch = reinterpret_cast(_STD _To_address(_First1)); - const auto _Last1_ch = reinterpret_cast(_STD _To_address(_Last1)); - const auto _First2_ch = reinterpret_cast(_STD _To_address(_First2)); - return _CSTD memcmp(_First1_ch, _First2_ch, static_cast(_Last1_ch - _First1_ch)); -} - template _NODISCARD int _Memcmp_count(_CtgIt1 _First1, _CtgIt2 _First2, const size_t _Count) { _STL_INTERNAL_STATIC_ASSERT(sizeof(_Iter_value_t<_CtgIt1>) == sizeof(_Iter_value_t<_CtgIt2>)); @@ -5410,7 +5401,11 @@ _NODISCARD _CONSTEXPR20 bool equal(const _InIt1 _First1, const _InIt1 _Last1, co if (!_STD is_constant_evaluated()) #endif // _HAS_CXX20 { - return _STD _Memcmp_ranges(_UFirst1, _ULast1, _UFirst2) == 0; + _STL_INTERNAL_STATIC_ASSERT( + sizeof(_Iter_value_t) == sizeof(_Iter_value_t)); + const auto _First1_ch = reinterpret_cast(_STD _To_address(_UFirst1)); + const auto _Size = reinterpret_cast(_STD _To_address(_ULast1)) - _First1_ch; + return _CSTD memcmp(_First1_ch, _STD _To_address(_UFirst2), static_cast(_Size)) == 0; } }