diff options
Diffstat (limited to 'libstdc++-v3/include/bits/algorithmfwd.h')
-rw-r--r-- | libstdc++-v3/include/bits/algorithmfwd.h | 253 |
1 files changed, 133 insertions, 120 deletions
diff --git a/libstdc++-v3/include/bits/algorithmfwd.h b/libstdc++-v3/include/bits/algorithmfwd.h index cd98fe0594..3ff4ff7123 100644 --- a/libstdc++-v3/include/bits/algorithmfwd.h +++ b/libstdc++-v3/include/bits/algorithmfwd.h @@ -1,6 +1,6 @@ // <algorithm> Forward declarations -*- C++ -*- -// Copyright (C) 2007-2016 Free Software Foundation, Inc. +// Copyright (C) 2007-2017 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -45,13 +45,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /* adjacent_find - all_of (C++0x) - any_of (C++0x) + all_of (C++11) + any_of (C++11) binary_search + clamp (C++17) copy copy_backward - copy_if (C++0x) - copy_n (C++0x) + copy_if (C++11) + copy_n (C++11) count count_if equal @@ -62,17 +63,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION find_end find_first_of find_if - find_if_not (C++0x) + find_if_not (C++11) for_each generate generate_n includes inplace_merge - is_heap (C++0x) - is_heap_until (C++0x) - is_partitioned (C++0x) - is_sorted (C++0x) - is_sorted_until (C++0x) + is_heap (C++11) + is_heap_until (C++11) + is_partitioned (C++11) + is_sorted (C++11) + is_sorted_until (C++11) iter_swap lexicographical_compare lower_bound @@ -82,17 +83,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION merge min min_element - minmax (C++0x) - minmax_element (C++0x) + minmax (C++11) + minmax_element (C++11) mismatch next_permutation - none_of (C++0x) + none_of (C++11) nth_element partial_sort partial_sort_copy partition - partition_copy (C++0x) - partition_point (C++0x) + partition_copy (C++11) + partition_point (C++11) pop_heap prev_permutation push_heap @@ -115,7 +116,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION set_intersection set_symmetric_difference set_union - shuffle (C++0x) + shuffle (C++11) sort sort_heap stable_partition @@ -167,12 +168,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * * These algorithms are variations of a classic binary search, and * all assume that the sequence being searched is already sorted. - * + * * The number of comparisons will be logarithmic (and as few as * possible). The number of steps through the sequence will be * logarithmic for random-access iterators (e.g., pointers), and * linear otherwise. - * + * * The LWG has passed Defect Report 270, which notes: <em>The * proposed resolution reinterprets binary search. Instead of * thinking about searching for a value in a sorted range, we view @@ -201,15 +202,27 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif template<typename _FIter, typename _Tp> - bool + bool binary_search(_FIter, _FIter, const _Tp&); template<typename _FIter, typename _Tp, typename _Compare> - bool + bool binary_search(_FIter, _FIter, const _Tp&, _Compare); +#if __cplusplus > 201402L + template<typename _Tp> + _GLIBCXX14_CONSTEXPR + const _Tp& + clamp(const _Tp&, const _Tp&, const _Tp&); + + template<typename _Tp, typename _Compare> + _GLIBCXX14_CONSTEXPR + const _Tp& + clamp(const _Tp&, const _Tp&, const _Tp&, _Compare); +#endif + template<typename _IIter, typename _OIter> - _OIter + _OIter copy(_IIter, _IIter, _OIter); template<typename _BIter1, typename _BIter2> @@ -238,7 +251,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION equal_range(_FIter, _FIter, const _Tp&, _Compare); template<typename _FIter, typename _Tp> - void + void fill(_FIter, _FIter, const _Tp&); template<typename _OIter, typename _Size, typename _Tp> @@ -269,36 +282,36 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // generate_n template<typename _IIter1, typename _IIter2> - bool + bool includes(_IIter1, _IIter1, _IIter2, _IIter2); template<typename _IIter1, typename _IIter2, typename _Compare> - bool + bool includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); template<typename _BIter> - void + void inplace_merge(_BIter, _BIter, _BIter); template<typename _BIter, typename _Compare> - void + void inplace_merge(_BIter, _BIter, _BIter, _Compare); #if __cplusplus >= 201103L template<typename _RAIter> - bool + bool is_heap(_RAIter, _RAIter); template<typename _RAIter, typename _Compare> - bool + bool is_heap(_RAIter, _RAIter, _Compare); template<typename _RAIter> - _RAIter + _RAIter is_heap_until(_RAIter, _RAIter); template<typename _RAIter, typename _Compare> - _RAIter + _RAIter is_heap_until(_RAIter, _RAIter, _Compare); template<typename _IIter, typename _Predicate> @@ -315,63 +328,63 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate); template<typename _FIter> - bool + bool is_sorted(_FIter, _FIter); template<typename _FIter, typename _Compare> - bool + bool is_sorted(_FIter, _FIter, _Compare); template<typename _FIter> - _FIter + _FIter is_sorted_until(_FIter, _FIter); template<typename _FIter, typename _Compare> - _FIter + _FIter is_sorted_until(_FIter, _FIter, _Compare); #endif template<typename _FIter1, typename _FIter2> - void + void iter_swap(_FIter1, _FIter2); template<typename _FIter, typename _Tp> - _FIter + _FIter lower_bound(_FIter, _FIter, const _Tp&); template<typename _FIter, typename _Tp, typename _Compare> - _FIter + _FIter lower_bound(_FIter, _FIter, const _Tp&, _Compare); template<typename _RAIter> - void + void make_heap(_RAIter, _RAIter); template<typename _RAIter, typename _Compare> - void + void make_heap(_RAIter, _RAIter, _Compare); - template<typename _Tp> + template<typename _Tp> _GLIBCXX14_CONSTEXPR - const _Tp& + const _Tp& max(const _Tp&, const _Tp&); template<typename _Tp, typename _Compare> _GLIBCXX14_CONSTEXPR - const _Tp& + const _Tp& max(const _Tp&, const _Tp&, _Compare); // max_element // merge - template<typename _Tp> + template<typename _Tp> _GLIBCXX14_CONSTEXPR - const _Tp& + const _Tp& min(const _Tp&, const _Tp&); template<typename _Tp, typename _Compare> _GLIBCXX14_CONSTEXPR - const _Tp& + const _Tp& min(const _Tp&, const _Tp&, _Compare); // min_element @@ -379,7 +392,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #if __cplusplus >= 201103L template<typename _Tp> _GLIBCXX14_CONSTEXPR - pair<const _Tp&, const _Tp&> + pair<const _Tp&, const _Tp&> minmax(const _Tp&, const _Tp&); template<typename _Tp, typename _Compare> @@ -431,11 +444,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // mismatch template<typename _BIter> - bool + bool next_permutation(_BIter, _BIter); template<typename _BIter, typename _Compare> - bool + bool next_permutation(_BIter, _BIter, _Compare); #if __cplusplus >= 201103L @@ -469,65 +482,65 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif template<typename _RAIter> - void + void pop_heap(_RAIter, _RAIter); template<typename _RAIter, typename _Compare> - void + void pop_heap(_RAIter, _RAIter, _Compare); template<typename _BIter> - bool + bool prev_permutation(_BIter, _BIter); template<typename _BIter, typename _Compare> - bool + bool prev_permutation(_BIter, _BIter, _Compare); template<typename _RAIter> - void + void push_heap(_RAIter, _RAIter); template<typename _RAIter, typename _Compare> - void + void push_heap(_RAIter, _RAIter, _Compare); // random_shuffle template<typename _FIter, typename _Tp> - _FIter + _FIter remove(_FIter, _FIter, const _Tp&); template<typename _FIter, typename _Predicate> - _FIter + _FIter remove_if(_FIter, _FIter, _Predicate); template<typename _IIter, typename _OIter, typename _Tp> - _OIter + _OIter remove_copy(_IIter, _IIter, _OIter, const _Tp&); template<typename _IIter, typename _OIter, typename _Predicate> - _OIter + _OIter remove_copy_if(_IIter, _IIter, _OIter, _Predicate); // replace template<typename _IIter, typename _OIter, typename _Tp> - _OIter + _OIter replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&); template<typename _Iter, typename _OIter, typename _Predicate, typename _Tp> - _OIter + _OIter replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&); // replace_if template<typename _BIter> - void + void reverse(_BIter, _BIter); template<typename _BIter, typename _OIter> - _OIter + _OIter reverse_copy(_BIter, _BIter, _OIter); inline namespace _V2 @@ -538,7 +551,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template<typename _FIter, typename _OIter> - _OIter + _OIter rotate_copy(_FIter, _FIter, _FIter, _OIter); // search @@ -555,15 +568,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif template<typename _RAIter> - void + void sort_heap(_RAIter, _RAIter); template<typename _RAIter, typename _Compare> - void + void sort_heap(_RAIter, _RAIter, _Compare); template<typename _BIter, typename _Predicate> - _BIter + _BIter stable_partition(_BIter, _BIter, _Predicate); #if __cplusplus < 201103L @@ -579,27 +592,27 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif template<typename _FIter1, typename _FIter2> - _FIter2 + _FIter2 swap_ranges(_FIter1, _FIter1, _FIter2); // transform template<typename _FIter> - _FIter + _FIter unique(_FIter, _FIter); template<typename _FIter, typename _BinaryPredicate> - _FIter + _FIter unique(_FIter, _FIter, _BinaryPredicate); // unique_copy template<typename _FIter, typename _Tp> - _FIter + _FIter upper_bound(_FIter, _FIter, const _Tp&); template<typename _FIter, typename _Tp, typename _Compare> - _FIter + _FIter upper_bound(_FIter, _FIter, const _Tp&, _Compare); _GLIBCXX_END_NAMESPACE_VERSION @@ -607,11 +620,11 @@ _GLIBCXX_END_NAMESPACE_VERSION _GLIBCXX_BEGIN_NAMESPACE_ALGO template<typename _FIter> - _FIter + _FIter adjacent_find(_FIter, _FIter); template<typename _FIter, typename _BinaryPredicate> - _FIter + _FIter adjacent_find(_FIter, _FIter, _BinaryPredicate); template<typename _IIter, typename _Tp> @@ -623,15 +636,15 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO count_if(_IIter, _IIter, _Predicate); template<typename _IIter1, typename _IIter2> - bool + bool equal(_IIter1, _IIter1, _IIter2); template<typename _IIter1, typename _IIter2, typename _BinaryPredicate> - bool + bool equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate); template<typename _IIter, typename _Tp> - _IIter + _IIter find(_IIter, _IIter, const _Tp&); template<typename _FIter1, typename _FIter2> @@ -647,11 +660,11 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO find_if(_IIter, _IIter, _Predicate); template<typename _IIter, typename _Funct> - _Funct + _Funct for_each(_IIter, _IIter, _Funct); template<typename _FIter, typename _Generator> - void + void generate(_FIter, _FIter, _Generator); template<typename _OIter, typename _Size, typename _Generator> @@ -659,40 +672,40 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO generate_n(_OIter, _Size, _Generator); template<typename _IIter1, typename _IIter2> - bool + bool lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2); template<typename _IIter1, typename _IIter2, typename _Compare> - bool + bool lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); template<typename _FIter> _GLIBCXX14_CONSTEXPR - _FIter + _FIter max_element(_FIter, _FIter); template<typename _FIter, typename _Compare> _GLIBCXX14_CONSTEXPR - _FIter + _FIter max_element(_FIter, _FIter, _Compare); template<typename _IIter1, typename _IIter2, typename _OIter> - _OIter + _OIter merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); - template<typename _IIter1, typename _IIter2, typename _OIter, + template<typename _IIter1, typename _IIter2, typename _OIter, typename _Compare> - _OIter + _OIter merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); template<typename _FIter> _GLIBCXX14_CONSTEXPR - _FIter + _FIter min_element(_FIter, _FIter); template<typename _FIter, typename _Compare> _GLIBCXX14_CONSTEXPR - _FIter + _FIter min_element(_FIter, _FIter, _Compare); template<typename _IIter1, typename _IIter2> @@ -704,31 +717,31 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate); template<typename _RAIter> - void + void nth_element(_RAIter, _RAIter, _RAIter); template<typename _RAIter, typename _Compare> - void + void nth_element(_RAIter, _RAIter, _RAIter, _Compare); template<typename _RAIter> - void + void partial_sort(_RAIter, _RAIter, _RAIter); template<typename _RAIter, typename _Compare> - void + void partial_sort(_RAIter, _RAIter, _RAIter, _Compare); template<typename _BIter, typename _Predicate> - _BIter + _BIter partition(_BIter, _BIter, _Predicate); template<typename _RAIter> - void + void random_shuffle(_RAIter, _RAIter); template<typename _RAIter, typename _Generator> - void + void random_shuffle(_RAIter, _RAIter, #if __cplusplus >= 201103L _Generator&&); @@ -737,98 +750,98 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO #endif template<typename _FIter, typename _Tp> - void + void replace(_FIter, _FIter, const _Tp&, const _Tp&); template<typename _FIter, typename _Predicate, typename _Tp> - void + void replace_if(_FIter, _FIter, _Predicate, const _Tp&); template<typename _FIter1, typename _FIter2> - _FIter1 + _FIter1 search(_FIter1, _FIter1, _FIter2, _FIter2); template<typename _FIter1, typename _FIter2, typename _BinaryPredicate> - _FIter1 + _FIter1 search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); template<typename _FIter, typename _Size, typename _Tp> - _FIter + _FIter search_n(_FIter, _FIter, _Size, const _Tp&); - template<typename _FIter, typename _Size, typename _Tp, + template<typename _FIter, typename _Size, typename _Tp, typename _BinaryPredicate> - _FIter + _FIter search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate); template<typename _IIter1, typename _IIter2, typename _OIter> - _OIter + _OIter set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); - template<typename _IIter1, typename _IIter2, typename _OIter, + template<typename _IIter1, typename _IIter2, typename _OIter, typename _Compare> - _OIter + _OIter set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); template<typename _IIter1, typename _IIter2, typename _OIter> - _OIter + _OIter set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); template<typename _IIter1, typename _IIter2, typename _OIter, typename _Compare> - _OIter + _OIter set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); template<typename _IIter1, typename _IIter2, typename _OIter> _OIter set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); - template<typename _IIter1, typename _IIter2, typename _OIter, + template<typename _IIter1, typename _IIter2, typename _OIter, typename _Compare> _OIter - set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, + set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); template<typename _IIter1, typename _IIter2, typename _OIter> - _OIter + _OIter set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); template<typename _IIter1, typename _IIter2, typename _OIter, typename _Compare> - _OIter + _OIter set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); template<typename _RAIter> - void + void sort(_RAIter, _RAIter); template<typename _RAIter, typename _Compare> - void + void sort(_RAIter, _RAIter, _Compare); template<typename _RAIter> - void + void stable_sort(_RAIter, _RAIter); template<typename _RAIter, typename _Compare> - void + void stable_sort(_RAIter, _RAIter, _Compare); template<typename _IIter, typename _OIter, typename _UnaryOperation> - _OIter + _OIter transform(_IIter, _IIter, _OIter, _UnaryOperation); - template<typename _IIter1, typename _IIter2, typename _OIter, + template<typename _IIter1, typename _IIter2, typename _OIter, typename _BinaryOperation> - _OIter + _OIter transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation); template<typename _IIter, typename _OIter> - _OIter + _OIter unique_copy(_IIter, _IIter, _OIter); template<typename _IIter, typename _OIter, typename _BinaryPredicate> - _OIter + _OIter unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate); _GLIBCXX_END_NAMESPACE_ALGO |