1#ifndef BOOST_MOVE_DETAIL_IS_SORTED_HPP
2#define BOOST_MOVE_DETAIL_IS_SORTED_HPP
3///////////////////////////////////////////////////////////////////////////////
4//
5// (C) Copyright Ion Gaztanaga 2017-2018. Distributed under the Boost
6// Software License, Version 1.0. (See accompanying file
7// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
8//
9// See http://www.boost.org/libs/container for documentation.
10//
11///////////////////////////////////////////////////////////////////////////////
12
13#ifndef BOOST_CONFIG_HPP
14# include <boost/config.hpp>
15#endif
16
17#if defined(BOOST_HAS_PRAGMA_ONCE)
18# pragma once
19#endif
20
21namespace boost {
22namespace movelib {
23
24template<class ForwardIt, class Pred>
25bool is_sorted(ForwardIt const first, ForwardIt last, Pred pred)
26{
27 if (first != last) {
28 ForwardIt next = first, cur(first);
29 while (++next != last) {
30 if (pred(*next, *cur))
31 return false;
32 cur = next;
33 }
34 }
35 return true;
36}
37
38template<class ForwardIt, class Pred>
39bool is_sorted_and_unique(ForwardIt first, ForwardIt last, Pred pred)
40{
41 if (first != last) {
42 ForwardIt next = first;
43 while (++next != last) {
44 if (!pred(*first, *next))
45 return false;
46 first = next;
47 }
48 }
49 return true;
50}
51
52} //namespace movelib {
53} //namespace boost {
54
55#endif //BOOST_MOVE_DETAIL_IS_SORTED_HPP
56

source code of boost/libs/move/include/boost/move/algo/detail/is_sorted.hpp