Revert my change to commit with PR reference again.
authorFrançois Dumont <fdumont@gcc.gnu.org>
Tue, 25 Aug 2015 20:22:47 +0000 (20:22 +0000)
committerFrançois Dumont <fdumont@gcc.gnu.org>
Tue, 25 Aug 2015 20:22:47 +0000 (20:22 +0000)
From-SVN: r227187

12 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/stl_algo.h
libstdc++-v3/include/bits/stl_algobase.h
libstdc++-v3/include/bits/stl_heap.h
libstdc++-v3/include/debug/debug.h
libstdc++-v3/include/debug/formatter.h
libstdc++-v3/include/debug/functions.h
libstdc++-v3/include/debug/macros.h
libstdc++-v3/src/c++11/debug.cc
libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/debug/irreflexive_neg.cc [deleted file]
libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc [deleted file]
libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc [deleted file]

index 11f510228b4b3ba791400f760f3834e6723e6f63..f6f68a813016260f16edb3bc3eec1f38eb8f758b 100644 (file)
@@ -1,58 +1,3 @@
-2015-08-24  François Dumont  <fdumont@gcc.gnu.org>
-
-       * include/debug/formatter.h (_Debug_msg_id::__msg_irreflexive_ordering):
-       New enum entry.
-       * include/debug/functions.h (_Irreflexive_checker): New.
-       (__is_irreflexive, __is_irreflexive_pred): New.
-       * include/debug/macros.h
-       (__glibcxx_check_irreflexive, __glibcxx_check_irreflexive_pred): New
-       macros.
-       (__glibcxx_check_irreflexive2, __glibcxx_check_irreflexive_pred2): New
-       macros limited to post-C++11 mode.
-       * include/debug/debug.h
-       (__glibcxx_requires_irreflexive, __glibcxx_requires_irreflexive_pred):
-       New macros, use latter.
-       (__glibcxx_requires_irreflexive2, __glibcxx_requires_irreflexive_pred2):
-       Likewise.
-       * include/bits/stl_algo.h
-       (partial_sort_copy): Add irreflexive debug check.
-       (partial_sort_copy): Likewise.
-       (lower_bound): Likewise.
-       (upper_bound): Likewise.
-       (equal_range): Likewise.
-       (binary_search): Likewise.
-       (inplace_merge): Likewise.
-       (includes): Likewise.
-       (next_permutation): Likewise.
-       (prev_permutation): Likewise.
-       (is_sorted_until): Likewise.
-       (minmax_element): Likewise.
-       (partial_sort): Likewise.
-       (nth_element): Likewise.
-       (sort): Likewise.
-       (merge): Likewise.
-       (stable_sort): Likewise.
-       (set_union): Likewise.
-       (set_intersection): Likewise.
-       (set_difference): Likewise.
-       (set_symmetric_difference): Likewise.
-       (min_element): Likewise.
-       (max_element): Likewise.
-       * include/bits/stl_algobase.h
-       (lower_bound): Likewise.
-       (lexicographical_compare): Likewise.
-       * include/bits/stl_heap.h
-       (push_heap): Likewise.
-       (pop_heap): Likewise.
-       (make_heap): Likewise.
-       (sort_heap): Likewise.
-       (is_heap_until): Likewise.
-       * testsuite/25_algorithms/lexicographical_compare/debug/
-       irreflexive_neg.cc: New.
-       * testsuite/25_algorithms/lower_bound/debug/irreflexive.cc: New.
-       * testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc:
-       New.
-
 2015-08-24  Jonathan Wakely  <jwakely@redhat.com>
 
        PR libstdc++/65049
index f7f3e84dc821bfb13a54a666573ada884bd4ea60..93e834abeb7889cbc3aa2b6255bacead6c24bfcc 100644 (file)
@@ -1750,7 +1750,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
                                                     _OutputValueType>)
       __glibcxx_function_requires(_LessThanComparableConcept<_OutputValueType>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive(__first, __last);
       __glibcxx_requires_valid_range(__result_first, __result_last);
 
       return std::__partial_sort_copy(__first, __last,
@@ -1804,7 +1803,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
                                  _OutputValueType, _OutputValueType>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
       __glibcxx_requires_valid_range(__result_first, __result_last);
 
       return std::__partial_sort_copy(__first, __last,
@@ -2029,7 +2027,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
                                  _ValueType, _Tp>)
       __glibcxx_requires_partitioned_lower_pred(__first, __last,
                                                __val, __comp);
-      __glibcxx_requires_irreflexive_pred2(__first, __last, __comp);
 
       return std::__lower_bound(__first, __last, __val,
                                __gnu_cxx::__ops::__iter_comp_val(__comp));
@@ -2085,7 +2082,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
       __glibcxx_function_requires(_LessThanOpConcept<_Tp, _ValueType>)
       __glibcxx_requires_partitioned_upper(__first, __last, __val);
-      __glibcxx_requires_irreflexive2(__first, __last);
 
       return std::__upper_bound(__first, __last, __val,
                                __gnu_cxx::__ops::__val_less_iter());
@@ -2120,7 +2116,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
                                  _Tp, _ValueType>)
       __glibcxx_requires_partitioned_upper_pred(__first, __last,
                                                __val, __comp);
-      __glibcxx_requires_irreflexive_pred2(__first, __last, __comp);
 
       return std::__upper_bound(__first, __last, __val,
                                __gnu_cxx::__ops::__val_comp_iter(__comp));
@@ -2194,8 +2189,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __glibcxx_function_requires(_LessThanOpConcept<_ValueType, _Tp>)
       __glibcxx_function_requires(_LessThanOpConcept<_Tp, _ValueType>)
       __glibcxx_requires_partitioned_lower(__first, __last, __val);
-      __glibcxx_requires_partitioned_upper(__first, __last, __val);
-      __glibcxx_requires_irreflexive2(__first, __last);
+      __glibcxx_requires_partitioned_upper(__first, __last, __val);      
 
       return std::__equal_range(__first, __last, __val,
                                __gnu_cxx::__ops::__iter_less_val(),
@@ -2237,7 +2231,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
                                                __val, __comp);
       __glibcxx_requires_partitioned_upper_pred(__first, __last,
                                                __val, __comp);
-      __glibcxx_requires_irreflexive_pred2(__first, __last, __comp);
 
       return std::__equal_range(__first, __last, __val,
                                __gnu_cxx::__ops::__iter_comp_val(__comp),
@@ -2269,7 +2262,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __glibcxx_function_requires(_LessThanOpConcept<_Tp, _ValueType>)
       __glibcxx_requires_partitioned_lower(__first, __last, __val);
       __glibcxx_requires_partitioned_upper(__first, __last, __val);
-      __glibcxx_requires_irreflexive2(__first, __last);
 
       _ForwardIterator __i
        = std::__lower_bound(__first, __last, __val,
@@ -2308,7 +2300,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
                                                __val, __comp);
       __glibcxx_requires_partitioned_upper_pred(__first, __last,
                                                __val, __comp);
-      __glibcxx_requires_irreflexive_pred2(__first, __last, __comp);
 
       _ForwardIterator __i
        = std::__lower_bound(__first, __last, __val,
@@ -2603,7 +2594,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
            typename iterator_traits<_BidirectionalIterator>::value_type>)
       __glibcxx_requires_sorted(__first, __middle);
       __glibcxx_requires_sorted(__middle, __last);
-      __glibcxx_requires_irreflexive(__first, __last);
 
       std::__inplace_merge(__first, __middle, __last,
                           __gnu_cxx::__ops::__iter_less_iter());
@@ -2646,7 +2636,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
            typename iterator_traits<_BidirectionalIterator>::value_type>)
       __glibcxx_requires_sorted_pred(__first, __middle, __comp);
       __glibcxx_requires_sorted_pred(__middle, __last, __comp);
-      __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
 
       std::__inplace_merge(__first, __middle, __last,
                           __gnu_cxx::__ops::__iter_comp_iter(__comp));
@@ -2858,8 +2847,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
            typename iterator_traits<_InputIterator1>::value_type>)
       __glibcxx_requires_sorted_set(__first1, __last1, __first2);
       __glibcxx_requires_sorted_set(__first2, __last2, __first1);
-      __glibcxx_requires_irreflexive2(__first1, __last1);
-      __glibcxx_requires_irreflexive2(__first2, __last2);
 
       return std::__includes(__first1, __last1, __first2, __last2,
                             __gnu_cxx::__ops::__iter_less_iter());
@@ -2904,8 +2891,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
            typename iterator_traits<_InputIterator1>::value_type>)
       __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp);
       __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp);
-      __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp);
-      __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp);
 
       return std::__includes(__first1, __last1, __first2, __last2,
                             __gnu_cxx::__ops::__iter_comp_iter(__comp));
@@ -2981,7 +2966,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __glibcxx_function_requires(_LessThanComparableConcept<
            typename iterator_traits<_BidirectionalIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive(__first, __last);
 
       return std::__next_permutation
        (__first, __last, __gnu_cxx::__ops::__iter_less_iter());
@@ -3014,7 +2998,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
            typename iterator_traits<_BidirectionalIterator>::value_type,
            typename iterator_traits<_BidirectionalIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
 
       return std::__next_permutation
        (__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp));
@@ -3081,7 +3064,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __glibcxx_function_requires(_LessThanComparableConcept<
            typename iterator_traits<_BidirectionalIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive(__first, __last);
 
       return std::__prev_permutation(__first, __last,
                                     __gnu_cxx::__ops::__iter_less_iter());
@@ -3114,7 +3096,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
            typename iterator_traits<_BidirectionalIterator>::value_type,
            typename iterator_traits<_BidirectionalIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
 
       return std::__prev_permutation(__first, __last,
                                __gnu_cxx::__ops::__iter_comp_iter(__comp));
@@ -3277,7 +3258,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __glibcxx_function_requires(_LessThanComparableConcept<
            typename iterator_traits<_ForwardIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive(__first, __last);
 
       return std::__is_sorted_until(__first, __last,
                                    __gnu_cxx::__ops::__iter_less_iter());
@@ -3303,7 +3283,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
            typename iterator_traits<_ForwardIterator>::value_type,
            typename iterator_traits<_ForwardIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
 
       return std::__is_sorted_until(__first, __last,
                                    __gnu_cxx::__ops::__iter_comp_iter(__comp));
@@ -3428,7 +3407,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __glibcxx_function_requires(_LessThanComparableConcept<
            typename iterator_traits<_ForwardIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive(__first, __last);
 
       return std::__minmax_element(__first, __last,
                                   __gnu_cxx::__ops::__iter_less_iter());
@@ -3458,7 +3436,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
            typename iterator_traits<_ForwardIterator>::value_type,
            typename iterator_traits<_ForwardIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
 
       return std::__minmax_element(__first, __last,
                                   __gnu_cxx::__ops::__iter_comp_iter(__comp));
@@ -4579,7 +4556,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
            typename iterator_traits<_RandomAccessIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __middle);
       __glibcxx_requires_valid_range(__middle, __last);
-      __glibcxx_requires_irreflexive(__first, __last);
 
       std::__partial_sort(__first, __middle, __last,
                          __gnu_cxx::__ops::__iter_less_iter());
@@ -4619,7 +4595,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
            typename iterator_traits<_RandomAccessIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __middle);
       __glibcxx_requires_valid_range(__middle, __last);
-      __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
 
       std::__partial_sort(__first, __middle, __last,
                          __gnu_cxx::__ops::__iter_comp_iter(__comp));
@@ -4652,7 +4627,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
            typename iterator_traits<_RandomAccessIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __nth);
       __glibcxx_requires_valid_range(__nth, __last);
-      __glibcxx_requires_irreflexive(__first, __last);
 
       if (__first == __last || __nth == __last)
        return;
@@ -4692,7 +4666,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
            typename iterator_traits<_RandomAccessIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __nth);
       __glibcxx_requires_valid_range(__nth, __last);
-      __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
 
       if (__first == __last || __nth == __last)
        return;
@@ -4726,7 +4699,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
       __glibcxx_function_requires(_LessThanComparableConcept<
            typename iterator_traits<_RandomAccessIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive(__first, __last);
 
       std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter());
     }
@@ -4758,7 +4730,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
            typename iterator_traits<_RandomAccessIterator>::value_type,
            typename iterator_traits<_RandomAccessIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
 
       std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp));
     }
@@ -4826,8 +4797,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
            typename iterator_traits<_InputIterator1>::value_type>)     
       __glibcxx_requires_sorted_set(__first1, __last1, __first2);
       __glibcxx_requires_sorted_set(__first2, __last2, __first1);
-      __glibcxx_requires_irreflexive2(__first1, __last1);
-      __glibcxx_requires_irreflexive2(__first2, __last2);
 
       return _GLIBCXX_STD_A::__merge(__first1, __last1,
                                     __first2, __last2, __result,
@@ -4876,8 +4845,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
            typename iterator_traits<_InputIterator1>::value_type>)
       __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp);
       __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp);
-      __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp);
-      __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp);
 
       return _GLIBCXX_STD_A::__merge(__first1, __last1,
                                __first2, __last2, __result,
@@ -4931,7 +4898,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
       __glibcxx_function_requires(_LessThanComparableConcept<
            typename iterator_traits<_RandomAccessIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive(__first, __last);
 
       _GLIBCXX_STD_A::__stable_sort(__first, __last,
                                    __gnu_cxx::__ops::__iter_less_iter());
@@ -4967,7 +4933,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
            typename iterator_traits<_RandomAccessIterator>::value_type,
            typename iterator_traits<_RandomAccessIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
 
       _GLIBCXX_STD_A::__stable_sort(__first, __last,
                                    __gnu_cxx::__ops::__iter_comp_iter(__comp));
@@ -5045,8 +5010,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
            typename iterator_traits<_InputIterator1>::value_type>)
       __glibcxx_requires_sorted_set(__first1, __last1, __first2);
       __glibcxx_requires_sorted_set(__first2, __last2, __first1);
-      __glibcxx_requires_irreflexive2(__first1, __last1);
-      __glibcxx_requires_irreflexive2(__first2, __last2);
 
       return _GLIBCXX_STD_A::__set_union(__first1, __last1,
                                __first2, __last2, __result,
@@ -5094,8 +5057,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
            typename iterator_traits<_InputIterator1>::value_type>)
       __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp);
       __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp);
-      __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp);
-      __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp);
 
       return _GLIBCXX_STD_A::__set_union(__first1, __last1,
                                __first2, __last2, __result,
@@ -5162,8 +5123,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
            typename iterator_traits<_InputIterator1>::value_type>)
       __glibcxx_requires_sorted_set(__first1, __last1, __first2);
       __glibcxx_requires_sorted_set(__first2, __last2, __first1);
-      __glibcxx_requires_irreflexive2(__first1, __last1);
-      __glibcxx_requires_irreflexive2(__first2, __last2);
 
       return _GLIBCXX_STD_A::__set_intersection(__first1, __last1,
                                     __first2, __last2, __result,
@@ -5210,8 +5169,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
            typename iterator_traits<_InputIterator1>::value_type>)
       __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp);
       __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp);
-      __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp);
-      __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp);
 
       return _GLIBCXX_STD_A::__set_intersection(__first1, __last1,
                                __first2, __last2, __result,
@@ -5282,8 +5239,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
            typename iterator_traits<_InputIterator1>::value_type>)     
       __glibcxx_requires_sorted_set(__first1, __last1, __first2);
       __glibcxx_requires_sorted_set(__first2, __last2, __first1);
-      __glibcxx_requires_irreflexive2(__first1, __last1);
-      __glibcxx_requires_irreflexive2(__first2, __last2);
 
       return _GLIBCXX_STD_A::__set_difference(__first1, __last1,
                                   __first2, __last2, __result,
@@ -5332,8 +5287,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
            typename iterator_traits<_InputIterator1>::value_type>)
       __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp);
       __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp);
-      __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp);
-      __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp);
 
       return _GLIBCXX_STD_A::__set_difference(__first1, __last1,
                                   __first2, __last2, __result,
@@ -5412,8 +5365,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
            typename iterator_traits<_InputIterator1>::value_type>)     
       __glibcxx_requires_sorted_set(__first1, __last1, __first2);
       __glibcxx_requires_sorted_set(__first2, __last2, __first1);
-      __glibcxx_requires_irreflexive2(__first1, __last1);
-      __glibcxx_requires_irreflexive2(__first2, __last2);
 
       return _GLIBCXX_STD_A::__set_symmetric_difference(__first1, __last1,
                                        __first2, __last2, __result,
@@ -5463,8 +5414,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
            typename iterator_traits<_InputIterator1>::value_type>)
       __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp);
       __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp);
-      __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp);
-      __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp);
 
       return _GLIBCXX_STD_A::__set_symmetric_difference(__first1, __last1,
                                __first2, __last2, __result,
@@ -5503,7 +5452,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
       __glibcxx_function_requires(_LessThanComparableConcept<
            typename iterator_traits<_ForwardIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive(__first, __last);
 
       return _GLIBCXX_STD_A::__min_element(__first, __last,
                                __gnu_cxx::__ops::__iter_less_iter());
@@ -5530,7 +5478,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
            typename iterator_traits<_ForwardIterator>::value_type,
            typename iterator_traits<_ForwardIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
 
       return _GLIBCXX_STD_A::__min_element(__first, __last,
                                __gnu_cxx::__ops::__iter_comp_iter(__comp));
@@ -5567,7 +5514,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
       __glibcxx_function_requires(_LessThanComparableConcept<
            typename iterator_traits<_ForwardIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive(__first, __last);
 
       return _GLIBCXX_STD_A::__max_element(__first, __last,
                                __gnu_cxx::__ops::__iter_less_iter());
@@ -5594,7 +5540,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
            typename iterator_traits<_ForwardIterator>::value_type,
            typename iterator_traits<_ForwardIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
 
       return _GLIBCXX_STD_A::__max_element(__first, __last,
                                __gnu_cxx::__ops::__iter_comp_iter(__comp));
index 99f3cc4cfe93fd517278e91fde6b82b290d0cb64..75a15167e937fb25cc234b6c60bd43365992e7cd 100644 (file)
@@ -985,7 +985,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __glibcxx_function_requires(_LessThanOpConcept<
            typename iterator_traits<_ForwardIterator>::value_type, _Tp>)
       __glibcxx_requires_partitioned_lower(__first, __last, __val);
-      __glibcxx_requires_irreflexive2(__first, __last);
 
       return std::__lower_bound(__first, __last, __val,
                                __gnu_cxx::__ops::__iter_less_val());
@@ -1210,9 +1209,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
       __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>)
       __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>)
       __glibcxx_requires_valid_range(__first1, __last1);
-      __glibcxx_requires_irreflexive2(__first1, __last1);
       __glibcxx_requires_valid_range(__first2, __last2);
-      __glibcxx_requires_irreflexive2(__first2, __last2);
 
       return std::__lexicographical_compare_aux(std::__niter_base(__first1),
                                                std::__niter_base(__last1),
@@ -1242,9 +1239,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
       __glibcxx_function_requires(_InputIteratorConcept<_II1>)
       __glibcxx_function_requires(_InputIteratorConcept<_II2>)
       __glibcxx_requires_valid_range(__first1, __last1);
-      __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp);
       __glibcxx_requires_valid_range(__first2, __last2);
-      __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp);
 
       return std::__lexicographical_compare_impl
        (__first1, __last1, __first2, __last2,
index e13b6bed9aea32a3abba7291bc3af3c6665e8e64..3ab37c757538ba2808125bd8967c77240e7febb5 100644 (file)
@@ -159,7 +159,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
            _RandomAccessIterator>)
       __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive(__first, __last);
       __glibcxx_requires_heap(__first, __last - 1);
 
       _ValueType __value = _GLIBCXX_MOVE(*(__last - 1));
@@ -194,7 +193,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
            _RandomAccessIterator>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
       __glibcxx_requires_heap_pred(__first, __last - 1, __comp);
 
       _ValueType __value = _GLIBCXX_MOVE(*(__last - 1));
@@ -273,7 +271,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>)
       __glibcxx_requires_non_empty_range(__first, __last);
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive(__first, __last);
       __glibcxx_requires_heap(__first, __last);
 
       if (__last - __first > 1)
@@ -304,7 +301,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
            _RandomAccessIterator>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
       __glibcxx_requires_non_empty_range(__first, __last);
       __glibcxx_requires_heap_pred(__first, __last, __comp);
 
@@ -360,7 +356,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __glibcxx_function_requires(_LessThanComparableConcept<
            typename iterator_traits<_RandomAccessIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive(__first, __last);
 
       std::__make_heap(__first, __last,
                       __gnu_cxx::__ops::__iter_less_iter());
@@ -385,7 +380,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
            _RandomAccessIterator>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
 
       std::__make_heap(__first, __last,
                       __gnu_cxx::__ops::__iter_comp_iter(__comp));
@@ -421,7 +415,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __glibcxx_function_requires(_LessThanComparableConcept<
            typename iterator_traits<_RandomAccessIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive(__first, __last);
       __glibcxx_requires_heap(__first, __last);
 
       std::__sort_heap(__first, __last,
@@ -447,7 +440,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
            _RandomAccessIterator>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
       __glibcxx_requires_heap_pred(__first, __last, __comp);
 
       std::__sort_heap(__first, __last,
@@ -475,7 +467,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __glibcxx_function_requires(_LessThanComparableConcept<
            typename iterator_traits<_RandomAccessIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive(__first, __last);
 
       return __first + 
        std::__is_heap_until(__first, std::distance(__first, __last),
@@ -502,7 +493,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __glibcxx_function_requires(_RandomAccessIteratorConcept<
            _RandomAccessIterator>)
       __glibcxx_requires_valid_range(__first, __last);
-      __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
 
       return __first
        + std::__is_heap_until(__first, std::distance(__first, __last),
index 6b52b0ab3128b82a0e0302f9f4d50b3043a3f948..b6623e62eccf89ee50d3b272857e759a235f048d 100644 (file)
@@ -77,53 +77,41 @@ namespace __gnu_debug
 # define __glibcxx_requires_string(_String)
 # define __glibcxx_requires_string_len(_String,_Len)
 # define __glibcxx_requires_subscript(_N)
-# define __glibcxx_requires_irreflexive(_First,_Last)
-# define __glibcxx_requires_irreflexive2(_First,_Last)
-# define __glibcxx_requires_irreflexive_pred(_First,_Last,_Pred)
-# define __glibcxx_requires_irreflexive_pred2(_First,_Last,_Pred)
 
 #else
 
 # include <debug/macros.h>
 
 # define __glibcxx_requires_cond(_Cond,_Msg) _GLIBCXX_DEBUG_VERIFY(_Cond,_Msg)
-# define __glibcxx_requires_valid_range(_First,_Last)  \
-  __glibcxx_check_valid_range(_First,_Last)
-# define __glibcxx_requires_non_empty_range(_First,_Last)      \
-  __glibcxx_check_non_empty_range(_First,_Last)
-# define __glibcxx_requires_sorted(_First,_Last)       \
-  __glibcxx_check_sorted(_First,_Last)
-# define __glibcxx_requires_sorted_pred(_First,_Last,_Pred)    \
-  __glibcxx_check_sorted_pred(_First,_Last,_Pred)
-# define __glibcxx_requires_sorted_set(_First1,_Last1,_First2) \
-  __glibcxx_check_sorted_set(_First1,_Last1,_First2)
+# define __glibcxx_requires_valid_range(_First,_Last) \
+     __glibcxx_check_valid_range(_First,_Last)
+# define __glibcxx_requires_non_empty_range(_First,_Last) \
+     __glibcxx_check_non_empty_range(_First,_Last)
+# define __glibcxx_requires_sorted(_First,_Last) \
+     __glibcxx_check_sorted(_First,_Last)
+# define __glibcxx_requires_sorted_pred(_First,_Last,_Pred) \
+     __glibcxx_check_sorted_pred(_First,_Last,_Pred)
+# define __glibcxx_requires_sorted_set(_First1,_Last1,_First2) \
+     __glibcxx_check_sorted_set(_First1,_Last1,_First2)
 # define __glibcxx_requires_sorted_set_pred(_First1,_Last1,_First2,_Pred) \
-  __glibcxx_check_sorted_set_pred(_First1,_Last1,_First2,_Pred)
+     __glibcxx_check_sorted_set_pred(_First1,_Last1,_First2,_Pred)
 # define __glibcxx_requires_partitioned_lower(_First,_Last,_Value)     \
-  __glibcxx_check_partitioned_lower(_First,_Last,_Value)
+     __glibcxx_check_partitioned_lower(_First,_Last,_Value)
 # define __glibcxx_requires_partitioned_upper(_First,_Last,_Value)     \
-  __glibcxx_check_partitioned_upper(_First,_Last,_Value)
+     __glibcxx_check_partitioned_upper(_First,_Last,_Value)
 # define __glibcxx_requires_partitioned_lower_pred(_First,_Last,_Value,_Pred) \
-  __glibcxx_check_partitioned_lower_pred(_First,_Last,_Value,_Pred)
+     __glibcxx_check_partitioned_lower_pred(_First,_Last,_Value,_Pred)
 # define __glibcxx_requires_partitioned_upper_pred(_First,_Last,_Value,_Pred) \
-  __glibcxx_check_partitioned_upper_pred(_First,_Last,_Value,_Pred)
-# define __glibcxx_requires_heap(_First,_Last) \
-  __glibcxx_check_heap(_First,_Last)
-# define __glibcxx_requires_heap_pred(_First,_Last,_Pred)      \
-  __glibcxx_check_heap_pred(_First,_Last,_Pred)
+     __glibcxx_check_partitioned_upper_pred(_First,_Last,_Value,_Pred)
+# define __glibcxx_requires_heap(_First,_Last) \
+     __glibcxx_check_heap(_First,_Last)
+# define __glibcxx_requires_heap_pred(_First,_Last,_Pred) \
+     __glibcxx_check_heap_pred(_First,_Last,_Pred)
 # define __glibcxx_requires_nonempty() __glibcxx_check_nonempty()
 # define __glibcxx_requires_string(_String) __glibcxx_check_string(_String)
 # define __glibcxx_requires_string_len(_String,_Len)   \
-  __glibcxx_check_string_len(_String,_Len)
+     __glibcxx_check_string_len(_String,_Len)
 # define __glibcxx_requires_subscript(_N) __glibcxx_check_subscript(_N)
-# define __glibcxx_requires_irreflexive(_First,_Last)  \
-  __glibcxx_check_irreflexive(_First,_Last)
-# define __glibcxx_requires_irreflexive2(_First,_Last) \
-  __glibcxx_check_irreflexive2(_First,_Last)
-# define __glibcxx_requires_irreflexive_pred(_First,_Last,_Pred)       \
-  __glibcxx_check_irreflexive_pred(_First,_Last,_Pred)
-# define __glibcxx_requires_irreflexive_pred2(_First,_Last,_Pred)      \
-  __glibcxx_check_irreflexive_pred2(_First,_Last,_Pred)
 
 # include <debug/functions.h>
 
index 9fc23c828fc17ad6c143040721c7449ce225ab88..56ee8078681f6d8b72be9056f444a01be0213c4a 100644 (file)
@@ -126,8 +126,7 @@ namespace __gnu_debug
     __msg_valid_load_factor,
     // others
     __msg_equal_allocs,
-    __msg_insert_range_from_self,
-    __msg_irreflexive_ordering
+    __msg_insert_range_from_self
   };
 
   class _Error_formatter
index 218092af86a2a8cffdcb0f1b044ebad7d2f2ddb8..a9f234b0723513e801d1eb58c3feeed92492acb7 100644 (file)
@@ -445,49 +445,6 @@ namespace __gnu_debug
       return __first == __last;
     }
 
-#if __cplusplus >= 201103L
-  struct _Irreflexive_checker
-  {
-    template<typename _It>
-      static typename std::iterator_traits<_It>::reference
-      __deref();
-
-    template<typename _It,
-            typename = decltype(__deref<_It>() < __deref<_It>())>
-      static bool
-      _S_is_valid(_It __it)
-      { return !(*__it < *__it); }
-
-    // Fallback method if operator doesn't exist.
-    template<typename... _Args>
-      static bool
-      _S_is_valid(_Args...)
-      { return true; }
-
-    template<typename _It, typename _Pred, typename
-       = decltype(std::declval<_Pred>()(__deref<_It>(), __deref<_It>()))>
-      static bool
-      _S_is_valid_pred(_It __it, _Pred __pred)
-      { return !__pred(*__it, *__it); }
-
-    // Fallback method if predicate can't be invoked.
-    template<typename... _Args>
-      static bool
-      _S_is_valid_pred(_Args...)
-      { return true; }
-  };
-
-  template<typename _Iterator>
-    inline bool
-    __is_irreflexive(_Iterator __it)
-    { return _Irreflexive_checker::_S_is_valid(__it); }
-
-  template<typename _Iterator, typename _Pred>
-    inline bool
-    __is_irreflexive_pred(_Iterator __it, _Pred __pred)
-    { return _Irreflexive_checker::_S_is_valid_pred(__it, __pred); }
-#endif
-
 } // namespace __gnu_debug
 
 #endif
index c6366636ce378f520704fff1bcd5d2ba17e06887..a4c2649c843f95b00695ea79e6e897871ef6a88e 100644 (file)
@@ -362,37 +362,4 @@ _GLIBCXX_DEBUG_VERIFY(_This.get_allocator() == _Other.get_allocator(),     \
 #define __glibcxx_check_string_len(_String,_Len) \
   _GLIBCXX_DEBUG_PEDASSERT(_String != 0 || _Len == 0)
 
-// Verify that a predicate is irreflexive
-#define __glibcxx_check_irreflexive(_First,_Last)                      \
-  _GLIBCXX_DEBUG_VERIFY(_First == _Last || !(*_First < *_First),       \
-                       _M_message(__gnu_debug::__msg_irreflexive_ordering) \
-                       ._M_iterator_value_type(_First, "< operator type"))
-
-#if __cplusplus >= 201103L
-# define __glibcxx_check_irreflexive2(_First,_Last)                    \
-  _GLIBCXX_DEBUG_VERIFY(_First == _Last                                        \
-                       || __gnu_debug::__is_irreflexive(_First),       \
-                       _M_message(__gnu_debug::__msg_irreflexive_ordering) \
-                       ._M_iterator_value_type(_First, "< operator type"))
-#else
-# define __glibcxx_check_irreflexive2(_First,_Last)
-#endif
-
-#define __glibcxx_check_irreflexive_pred(_First,_Last,_Pred)           \
-  _GLIBCXX_DEBUG_VERIFY(_First == _Last        || !_Pred(*_First, *_First),            \
-                       _M_message(__gnu_debug::__msg_irreflexive_ordering) \
-                       ._M_instance(_Pred, "functor")                  \
-                       ._M_iterator_value_type(_First, "ordered type"))
-
-#if __cplusplus >= 201103L
-# define __glibcxx_check_irreflexive_pred2(_First,_Last,_Pred)         \
-  _GLIBCXX_DEBUG_VERIFY(_First == _Last                                        \
-                       ||__gnu_debug::__is_irreflexive_pred(_First, _Pred), \
-                       _M_message(__gnu_debug::__msg_irreflexive_ordering) \
-                       ._M_instance(_Pred, "functor")                  \
-                       ._M_iterator_value_type(_First, "ordered type"))
-#else
-# define __glibcxx_check_irreflexive_pred2(_First,_Last,_Pred)
-#endif
-
 #endif
index 997c0f33de06ef8a3080124f2d263c84542610c2..f60e31f845b1d6e72533ca2e46ecb67b12250a80 100644 (file)
@@ -185,8 +185,7 @@ namespace __gnu_debug
     "load factor shall be positive",
     "allocators must be equal",
     "attempt to insert with an iterator range [%1.name;, %2.name;) from this"
-    " container",
-    "comparison doesn't meet irreflexive requirements, assert(!(a < a))"
+    " container"
   };
 
   void
@@ -593,13 +592,11 @@ namespace
       {
        const int __bufsize = 64;
        char __buf[__bufsize];
-       __formatter->_M_format_word(__buf, __bufsize, "\"%s\"",
+       __formatter->_M_format_word(__buf, __bufsize, "\"%s\" ",
                                    __variant._M_name);
        __formatter->_M_print_word(__buf);
       }
 
-    __formatter->_M_print_word(" {\n");
-
     if (__variant._M_type)
       {
        __formatter->_M_print_word("  type = ");
@@ -771,7 +768,6 @@ namespace __gnu_debug
                                        _M_variant._M_iterator._M_sequence);
            __formatter->_M_print_word(__buf);
          }
-
        __formatter->_M_print_word("}\n");
        break;
       case __sequence:
@@ -790,12 +786,10 @@ namespace __gnu_debug
        if (_M_variant._M_instance._M_type)
          __formatter->_M_print_word(";\n");
 
-       __formatter->_M_print_word("}\n");
        break;
       case __iterator_value_type:
        __formatter->_M_print_word("iterator::value_type ");
        print_description(__formatter, _M_variant._M_iterator_value_type);
-       __formatter->_M_print_word("}\n");
        break;
       default:
        break;
diff --git a/libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/debug/irreflexive_neg.cc b/libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/debug/irreflexive_neg.cc
deleted file mode 100644 (file)
index 07ee8be..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright (C) 2015 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
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING3.  If not see
-// <http://www.gnu.org/licenses/>.
-//
-// { dg-options "-std=gnu++11" }
-// { dg-require-debug-mode "" }
-// { dg-do run { xfail *-*-* } }
-
-#include <algorithm>
-#include <testsuite_hooks.h>
-
-struct A
-{
-  A(int i) : _i(i)
-  { }
-
-  int _i;
-};
-
-bool
-operator<(A a, int i)
-{ return a._i < i; }
-
-bool
-operator<(int i, A a)
-{ return i < a._i; }
-
-void test01()
-{
-  bool test __attribute__((unused)) = true;
-
-  A as[] { 0, 1, 2, 3 };
-  int is[] { 0, 1, 2, 3 };
-  VERIFY( !std::lexicographical_compare(as, as + 4, is, is + 4) );
-}
-
-bool
-bad_lower(int lhs, int rhs)
-{
-  if (lhs == 0)
-    return true;
-
-  return lhs < rhs;
-}
-
-void test02()
-{
-  int is[] { 0, 1, 2, 3 };
-  std::lexicographical_compare(is, is + 4, is, is + 4, bad_lower);
-}
-
-int main()
-{
-  test01();
-  test02();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc b/libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc
deleted file mode 100644 (file)
index c87b3e1..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (C) 2015 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
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING3.  If not see
-// <http://www.gnu.org/licenses/>.
-//
-// { dg-require-debug-mode "" }
-// { dg-do compile }
-
-#include <algorithm>
-
-struct A
-{
-  A(int i) : _i(i)
-  { }
-
-  int _i;
-};
-
-// Only knowns how to compare an A with an int.
-struct A_int_comparer
-{
-  bool
-  operator()(A a, int i) const
-  { return a._i < i; }
-
-  bool
-  operator()(int i, A a) const
-  { return i < a._i; }
-};
-
-void test01()
-{
-  A as[] { 0, 1, 2, 3 };
-  std::lower_bound(as, as + 4, 1, A_int_comparer());
-}
diff --git a/libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc b/libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc
deleted file mode 100644 (file)
index 0218a26..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (C) 2015 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
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING3.  If not see
-// <http://www.gnu.org/licenses/>.
-//
-// { dg-require-debug-mode "" }
-// { dg-do run { xfail *-*-* } }
-
-#include <algorithm>
-
-bool
-bad_lower(int lhs, int rhs)
-{
-  if (lhs == 0)
-    return true;
-
-  return lhs < rhs;
-}
-
-void test01()
-{
-  int ins[] { 0, 1, 2, 3 };
-  int outs[] { 9, 9 };
-  std::partial_sort_copy(ins, ins + 4, outs, outs + 2, bad_lower);
-}
-
-int main()
-{
-  test01();
-  return 0;
-}