176d0caaeSpatrick // -*- C++ -*- 276d0caaeSpatrick //===----------------------------------------------------------------------===// 376d0caaeSpatrick // 476d0caaeSpatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 576d0caaeSpatrick // See https://llvm.org/LICENSE.txt for license information. 676d0caaeSpatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 776d0caaeSpatrick // 876d0caaeSpatrick //===----------------------------------------------------------------------===// 976d0caaeSpatrick 1076d0caaeSpatrick #ifndef _LIBCPP___ALGORITHM_MISMATCH_H 1176d0caaeSpatrick #define _LIBCPP___ALGORITHM_MISMATCH_H 1276d0caaeSpatrick 1376d0caaeSpatrick #include <__algorithm/comp.h> 14*4bdff4beSrobert #include <__config> 1576d0caaeSpatrick #include <__iterator/iterator_traits.h> 16*4bdff4beSrobert #include <__utility/pair.h> 1776d0caaeSpatrick 1876d0caaeSpatrick #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 1976d0caaeSpatrick # pragma GCC system_header 2076d0caaeSpatrick #endif 2176d0caaeSpatrick 2276d0caaeSpatrick _LIBCPP_BEGIN_NAMESPACE_STD 2376d0caaeSpatrick 2476d0caaeSpatrick template <class _InputIterator1, class _InputIterator2, class _BinaryPredicate> 2576d0caaeSpatrick _LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY 26*4bdff4beSrobert _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InputIterator1, _InputIterator2> mismatch(_InputIterator1 __first1,_InputIterator1 __last1,_InputIterator2 __first2,_BinaryPredicate __pred)2776d0caaeSpatrick mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _BinaryPredicate __pred) { 2876d0caaeSpatrick for (; __first1 != __last1; ++__first1, (void)++__first2) 2976d0caaeSpatrick if (!__pred(*__first1, *__first2)) 3076d0caaeSpatrick break; 3176d0caaeSpatrick return pair<_InputIterator1, _InputIterator2>(__first1, __first2); 3276d0caaeSpatrick } 3376d0caaeSpatrick 3476d0caaeSpatrick template <class _InputIterator1, class _InputIterator2> 3576d0caaeSpatrick _LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY 36*4bdff4beSrobert _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InputIterator1, _InputIterator2> mismatch(_InputIterator1 __first1,_InputIterator1 __last1,_InputIterator2 __first2)3776d0caaeSpatrick mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2) { 38*4bdff4beSrobert return std::mismatch(__first1, __last1, __first2, __equal_to()); 3976d0caaeSpatrick } 4076d0caaeSpatrick 4176d0caaeSpatrick #if _LIBCPP_STD_VER > 11 4276d0caaeSpatrick template <class _InputIterator1, class _InputIterator2, class _BinaryPredicate> 4376d0caaeSpatrick _LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY 44*4bdff4beSrobert _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InputIterator1, _InputIterator2> mismatch(_InputIterator1 __first1,_InputIterator1 __last1,_InputIterator2 __first2,_InputIterator2 __last2,_BinaryPredicate __pred)4576d0caaeSpatrick mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, 4676d0caaeSpatrick _BinaryPredicate __pred) { 4776d0caaeSpatrick for (; __first1 != __last1 && __first2 != __last2; ++__first1, (void)++__first2) 4876d0caaeSpatrick if (!__pred(*__first1, *__first2)) 4976d0caaeSpatrick break; 5076d0caaeSpatrick return pair<_InputIterator1, _InputIterator2>(__first1, __first2); 5176d0caaeSpatrick } 5276d0caaeSpatrick 5376d0caaeSpatrick template <class _InputIterator1, class _InputIterator2> 5476d0caaeSpatrick _LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY 55*4bdff4beSrobert _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InputIterator1, _InputIterator2> mismatch(_InputIterator1 __first1,_InputIterator1 __last1,_InputIterator2 __first2,_InputIterator2 __last2)5676d0caaeSpatrick mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2) { 57*4bdff4beSrobert return std::mismatch(__first1, __last1, __first2, __last2, __equal_to()); 5876d0caaeSpatrick } 5976d0caaeSpatrick #endif 6076d0caaeSpatrick 6176d0caaeSpatrick _LIBCPP_END_NAMESPACE_STD 6276d0caaeSpatrick 6376d0caaeSpatrick #endif // _LIBCPP___ALGORITHM_MISMATCH_H 64