Boost logo

Boost-Commit :

From: dgregor_at_[hidden]
Date: 2008-06-25 17:26:37


Author: dgregor
Date: 2008-06-25 17:26:37 EDT (Wed, 25 Jun 2008)
New Revision: 46694
URL: http://svn.boost.org/trac/boost/changeset/46694

Log:
Formatting tweaks
Text files modified:
   sandbox/committee/concepts/stdlib/clib-algorithms.tex | 183 ++++++++++++++++++++++-----------------
   1 files changed, 104 insertions(+), 79 deletions(-)

Modified: sandbox/committee/concepts/stdlib/clib-algorithms.tex
==============================================================================
--- sandbox/committee/concepts/stdlib/clib-algorithms.tex (original)
+++ sandbox/committee/concepts/stdlib/clib-algorithms.tex 2008-06-25 17:26:37 EDT (Wed, 25 Jun 2008)
@@ -167,7 +167,8 @@
   template<ForwardIterator Iter>
     requires EqualityComparable<Iter::reference>
     Iter adjacent_find(Iter @\farg{first}@, Iter @\farg{last}@);
- template<ForwardIterator Iter, Predicate<auto, Iter::@\changedCCC{reference}{value_type}@, Iter::@\changedCCC{reference}{value_type}@> Pred>
+ template<ForwardIterator Iter,
+ Predicate<auto, Iter::@\changedCCC{reference}{value_type}@, Iter::@\changedCCC{reference}{value_type}@> Pred>
     Iter adjacent_find(Iter @\farg{first}@, Iter @\farg{last}@, Pred @\farg{pred}@);
 
   template<InputIterator Iter, class T>
@@ -271,7 +272,8 @@
     requires HasCopyAssign<Iter::reference, T>
     void replace_if(Iter @\farg{first}@, Iter @\farg{last}@,
                     Pred @\farg{pred}@, const T& @\farg{new_value}@);
- template<InputIterator InIter, OutputIterator<auto, InIter::@\changedCCC{value_type}{reference}@> OutIter, class T>
+ template<InputIterator InIter,
+ OutputIterator<auto, InIter::@\changedCCC{value_type}{reference}@> OutIter, class T>
     requires HasCopyAssign<OutIter::reference, T> && HasEqualTo<InIter::reference, T>
     OutIter replace_copy(InIter @\farg{first}@, InIter @\farg{last}@,
                          OutIter @\farg{result}@,
@@ -318,7 +320,8 @@
   template<ForwardIterator Iter>
     requires MoveAssignable<Iter::reference> && EqualityComparable<Iter::reference>
     Iter unique(Iter @\farg{first}@, Iter @\farg{last}@);
- template<ForwardIterator Iter, Predicate<auto, Iter::@\changedCCC{reference}{value_type}@, Iter::@\changedCCC{reference}{value_type}@> Pred>
+ template<ForwardIterator Iter,
+ Predicate<auto, Iter::@\changedCCC{reference}{value_type}@, Iter::@\changedCCC{reference}{value_type}@> Pred>
     requires MoveAssignable<Iter::reference>
     Iter unique(Iter @\farg{first}@, Iter @\farg{last}@,
                 Pred @\farg{pred}@);
@@ -376,7 +379,8 @@
     void random_shuffle(Iter @\farg{first}@,
                         Iter @\farg{last}@);
   template<RandomAccessIterator Iter, Callable<auto, Iter::difference_type> Rand>
- requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@ && Convertible<Rand::result_type, Iter::difference_type>
+ requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
+ && Convertible<Rand::result_type, Iter::difference_type>
     void random_shuffle(Iter @\farg{first}@,
                         Iter @\farg{last}@,
                         Rand& @\farg{rand}@);
@@ -400,7 +404,7 @@
              LessThanComparable<Iter::value_type>
     void sort(Iter @\farg{first}@, Iter @\farg{last}@);
   template<RandomAccessIterator Iter,
- @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
     requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
     void sort(Iter @\farg{first}@, Iter @\farg{last}@,
               Compare @\farg{comp}@);
@@ -410,7 +414,7 @@
              LessThanComparable<Iter::value_type>
     void stable_sort(Iter @\farg{first}@, Iter @\farg{last}@);
   template<RandomAccessIterator Iter,
- @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
     requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
     void stable_sort(Iter @\farg{first}@, Iter @\farg{last}@,
                      Compare @\farg{comp}@);
@@ -422,7 +426,7 @@
                       Iter @\farg{middle}@,
                       Iter @\farg{last}@);
   template<RandomAccessIterator Iter,
- @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
     requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
     void partial_sort(Iter @\farg{first}@,
                       Iter @\farg{middle}@,
@@ -449,13 +453,15 @@
   template<ForwardIterator Iter>
     requires LessThanComparable<Iter::value_type>
     bool is_sorted(Iter @\farg{first}@, Iter @\farg{last}@);
- template<ForwardIterator Iter, @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+ template<ForwardIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
     bool is_sorted(Iter @\farg{first}@, Iter @\farg{last}@,
                    Compare @\farg{comp}@);
   template<ForwardIterator Iter>
     requires LessThanComparable<Iter::value_type>
     Iter is_sorted_until(Iter @\farg{first}@, Iter @\farg{last}@);
- template<ForwardIterator Iter, @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+ template<ForwardIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
     Iter is_sorted_until(Iter @\farg{first}@, Iter @\farg{last}@,
                          Compare @\farg{comp}@);
 
@@ -464,10 +470,11 @@
              LessThanComparable<Iter::value_type>
     void nth_element(Iter @\farg{first}@, Iter @\farg{nth}@,
                      Iter @\farg{last}@);
-%% Revisit (mmarcus): not sure how to handle formatting for multiline replace here
- template<@\changedCCC{SwappableIterator<Iter>}{RandomAccessIterator Iter,
- StrictWeakOrder<auto, Iter::value_type> Compare>
- requires Swappable<Iter::reference>}@
+ template<@\changedCCC{SwappableIterator<Iter>}{RandomAccessIterator Iter}@,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
+ requires @\removedCCC{SameType<Iter::value_type\&, Iter::reference> \&\& Swappable<Iter::value_type> \&\&}@
+ @\removedCCC{MoveConstructible<Iter::value_type> \&\& MoveAssignable<Iter::value_type>}@
+ @\addedCC{Swappable<Iter::reference>}@
     void nth_element(Iter @\farg{first}@, Iter @\farg{nth}@,
                      Iter @\farg{last}@, Compare @\farg{comp}@);
 
@@ -523,7 +530,7 @@
                   OutIter @\farg{result}@);
   @\textcolor{addclr}{template}@<InputIterator InIter1, InputIterator InIter2,
            OutputIterator<auto, InIter1::value_type> OutIter,
- @\changedCCC{Predicate<auto, InIter1::value_type, InIter2::value_type>}{StrictWeakOrder<auto, InIter1::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, InIter1::value_type@\removedCCC{, InIter2::value_type}@> Compare>
     requires SameType<InIter1::value_type, InIter2::value_type>
     OutIter merge(InIter1 @\farg{first1}@, InIter1 @\farg{last1}@,
                   InIter2 @\farg{first2}@, InIter2 @\farg{last2}@,
@@ -536,7 +543,7 @@
                        Iter @\farg{middle}@,
                        Iter @\farg{last}@);
   template<BidirectionalIterator Iter,
- @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
     requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
     void inplace_merge(Iter @\farg{first}@,
                        Iter @\farg{middle}@,
@@ -548,7 +555,7 @@
     bool includes(Iter1 @\farg{first1}@, Iter1 @\farg{last1}@,
                   Iter2 @\farg{first2}@, Iter2 @\farg{last2}@);
   template<InputIterator Iter1, InputIterator Iter2,
- @\changedCCC{Predicate<auto, Iter1::value_type, Iter2::value_type>}{StrictWeakOrder<auto, Iter1::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter1::value_type@\removedCCC{, Iter2::value_type}@> Compare>
     requires SameType<Iter1::value_type, Iter2::value_type>
     bool includes(Iter1 @\farg{first1}@, Iter1 @\farg{last1}@,
                   Iter2 @\farg{first2}@, Iter2 @\farg{last2}@,
@@ -563,7 +570,7 @@
                       OutIter @\farg{result}@);
   template<InputIterator InIter1, InputIterator InIter2,
            OutputIterator<auto, InIter1::value_type> OutIter,
- @\changedCCC{Predicate<auto, InIter1::value_type, InIter2::value_type>}{StrictWeakOrder<auto, InIter1::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, InIter1::value_type@\removedCCC{, InIter2::value_type}@> Compare>
     requires SameType<InIter1::value_type, InIter2::value_type>
     OutIter set_union(InIter1 @\farg{first1}@, InIter1 @\farg{last1}@,
                       InIter2 @\farg{first2}@, InIter2 @\farg{last2}@,
@@ -578,7 +585,7 @@
                              OutIter @\farg{result}@);
   template<InputIterator InIter1, InputIterator InIter2,
            OutputIterator<auto, InIter1::value_type> OutIter,
- @\changedCCC{Predicate<auto, InIter1::value_type, InIter2::value_type>}{StrictWeakOrder<auto, InIter1::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, InIter1::value_type@\removedCCC{, InIter2::value_type}@> Compare>
     requires SameType<InIter1::value_type, InIter2::value_type>
     OutIter set_intersection(InIter1 @\farg{first1}@, InIter1 @\farg{last1}@,
                              InIter2 @\farg{first2}@, InIter2 @\farg{last2}@,
@@ -593,7 +600,7 @@
                            @\textcolor{addclr}{OutIter}@ @\farg{result}@);
   template<InputIterator InIter1, InputIterator InIter2,
            OutputIterator<auto, InIter1::value_type> OutIter,
- @\changedCCC{Predicate<auto, InIter1::value_type, InIter2::value_type>}{StrictWeakOrder<auto, InIter1::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, InIter1::value_type@\removedCCC{, InIter2::value_type}@> Compare>
     requires SameType<InIter1::value_type, InIter2::value_type>
     OutIter set_difference(InIter1 @\farg{first1}@, InIter1 @\farg{last1}@,
                            InIter2 @\farg{first2}@, InIter2 @\farg{last2}@,
@@ -608,7 +615,7 @@
                                      OutIter @\farg{result}@);
   template<InputIterator InIter1, InputIterator InIter2,
            OutputIterator<auto, InIter1::value_type> OutIter,
- @\changedCCC{Predicate<auto, InIter1::value_type, InIter2::value_type>}{StrictWeakOrder<auto, InIter1::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, InIter1::value_type@\removedCCC{, InIter2::value_type}@> Compare>
     requires SameType<InIter1::value_type, InIter2::value_type>
     OutIter set_symmetric_difference(InIter1 @\farg{first1}@, InIter1 @\farg{last1}@,
                                      InIter2 @\farg{first2}@, InIter2 @\farg{last2}@,
@@ -620,35 +627,37 @@
              LessThanComparable<Iter::value_type>
     void push_heap(Iter @\farg{first}@, Iter @\farg{last}@);
   template<RandomAccessIterator Iter,
- @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
     requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
     void push_heap(Iter @\farg{first}@, Iter @\farg{last}@,
                    Compare @\farg{comp}@);
 
   template<RandomAccessIterator Iter>
- requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@ && LessThanComparable<Iter::value_type>
+ requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
+ && LessThanComparable<Iter::value_type>
     void pop_heap(Iter @\farg{first}@, Iter @\farg{last}@);
   template<RandomAccessIterator Iter,
- @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
     requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
     void pop_heap(Iter @\farg{first}@, Iter @\farg{last}@,
                   Compare @\farg{comp}@);
 
   template<RandomAccessIterator Iter>
- requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@ &&
- LessThanComparable<Iter::value_type>
+ requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
+ && LessThanComparable<Iter::value_type>
     void make_heap(Iter @\farg{first}@, Iter @\farg{last}@);
   template<RandomAccessIterator Iter,
- @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
     requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
     void make_heap(Iter @\farg{first}@, Iter @\farg{last}@,
                    Compare @\farg{comp}@);
 
   template<RandomAccessIterator Iter>
- requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@ && LessThanComparable<Iter::value_type>
+ requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
+ && LessThanComparable<Iter::value_type>
     void sort_heap(Iter @\farg{first}@, Iter @\farg{last}@);
   template<RandomAccessIterator Iter,
- @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
     requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
     void sort_heap(Iter @\farg{first}@, Iter @\farg{last}@,
                    Compare @\farg{comp}@);
@@ -656,12 +665,14 @@
   template<RandomAccessIterator Iter>
     requires LessThanComparable<Iter::value_type>
     bool is_heap(Iter @\farg{first}@, Iter @\farg{last}@);
- template<RandomAccessIterator Iter, @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+ template<RandomAccessIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
     bool is_heap(Iter @\farg{first}@, Iter @\farg{last}@, Compare @\farg{comp}@);
   template<RandomAccessIterator Iter>
     @\addedCC{requires LessThanComparable<Iter::value_type>}@
     Iter is_heap_until(Iter @\farg{first}@, Iter @\farg{last}@);
- template<RandomAccessIterator Iter, @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+ template<RandomAccessIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
     Iter is_heap_until(Iter @\farg{first}@, Iter @\farg{last}@,
                        Compare @\farg{comp}@);
 
@@ -703,22 +714,25 @@
   template<ForwardIterator Iter>
     requires LessThanComparable<Iter::reference>
     Iter min_element(Iter @\farg{first}@, Iter @\farg{last}@);
- template<ForwardIterator Iter, @\changedCCC{Predicate<auto, Iter::reference, Iter::reference>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+ template<ForwardIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::@\changedCCC{reference}{value_type}@@\removedCCC{, Iter::reference}@> Compare>
     Iter min_element(Iter @\farg{first}@, Iter @\farg{last}@,
                      Compare @\farg{comp}@);
 
   template<ForwardIterator Iter>
     requires LessThanComparable<Iter::reference>
     Iter max_element(Iter @\farg{first}@, Iter @\farg{last}@);
- template<ForwardIterator Iter, @\changedCCC{Predicate<auto, Iter::reference, Iter::reference>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+ template<ForwardIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::@\changedCCC{reference}{value_type}@@\removedCCC{, Iter::reference}@> Compare>
     Iter max_element(Iter @\farg{first}@, Iter @\farg{last}@,
                      Compare @\farg{comp}@);
 
   template<ForwardIterator Iter>
     requires LessThanComparable<Iter::value_type>
     pair<Iter, Iter>
- @\textcolor{addclr}{}@minmax_element(Iter @\farg{first}@, Iter @\farg{last}@);
- template<ForwardIterator Iter, @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+ minmax_element(Iter @\farg{first}@, Iter @\farg{last}@);
+ template<ForwardIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
     pair<Iter, Iter>
       minmax_element(Iter @\farg{first}@, Iter @\farg{last}@, Compare @\farg{comp}@);
 
@@ -741,7 +755,7 @@
              @\textcolor{addclr}{LessThanComparable}@<Iter::reference>
     bool next_permutation(Iter @\farg{first}@, Iter @\farg{last}@);
   template<BidirectionalIterator Iter,
- @\changedCCC{Predicate<auto, Iter::reference, Iter::reference>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::@\changedCCC{reference}{value_type}@@\removedCCC{, Iter::reference}@> Compare>
     requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
     @\textcolor{addclr}{}@bool next_permutation(Iter @\farg{first}@, Iter @\farg{last}@, Compare @\farg{comp}@);
   template<BidirectionalIterator Iter>
@@ -749,7 +763,7 @@
              @\textcolor{addclr}{}@LessThanComparable<Iter::reference>
     bool prev_permutation(Iter @\farg{first}@, Iter @\farg{last}@);
   template<BidirectionalIterator Iter,
- @\changedCCC{Predicate<auto, Iter::reference, Iter::reference>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::@\changedCCC{reference}{value_type}@@\removedCCC{, Iter::reference}@> Compare>
     requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
     bool prev_permutation(Iter @\farg{first}@, Iter @\farg{last}@, Compare @\farg{comp}@);
 }
@@ -1103,7 +1117,8 @@
   requires @\changedCCC{HasEqualTo}{EqualityComparable}@<Iter::reference>
   Iter adjacent_find(Iter @\farg{first}@, Iter @\farg{last}@);
 
-template<ForwardIterator Iter, Predicate<auto, Iter::@\changedCCC{reference}{value_type}@, Iter::@\changedCCC{reference}{value_type}@> Pred>
+template<ForwardIterator Iter,
+ Predicate<auto, Iter::@\changedCCC{reference}{value_type}@, Iter::@\changedCCC{reference}{value_type}@> Pred>
   Iter adjacent_find(Iter @\farg{first}@, Iter @\farg{last}@, Pred @\farg{pred}@);
 \end{itemdecl}\color{black}
 
@@ -2237,7 +2252,8 @@
                       Iter @\farg{last}@);
 
 template<RandomAccessIterator Iter, Callable<auto, Iter::difference_type> Rand>
- requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@ && Convertible<Rand::result_type, Iter::difference_type>
+ requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
+ && Convertible<Rand::result_type, Iter::difference_type>
   void random_shuffle(Iter @\farg{first}@,
                       Iter @\farg{last}@,
                       Rand&& @\farg{rand}@);
@@ -2407,7 +2423,8 @@
            LessThanComparable<Iter::value_type>
   void sort(Iter @\farg{first}@, Iter @\farg{last}@);
 
-template<RandomAccessIterator Iter, @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+template<RandomAccessIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
   requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
   void sort(Iter @\farg{first}@, Iter @\farg{last}@,
             Compare @\farg{comp}@);
@@ -2450,7 +2467,8 @@
            LessThanComparable<Iter::value_type>
   void stable_sort(Iter @\farg{first}@, Iter @\farg{last}@);
 
-template<RandomAccessIterator Iter, @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+template<RandomAccessIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
   requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
   void stable_sort(Iter @\farg{first}@, Iter @\farg{last}@,
                    Compare @\farg{comp}@);
@@ -2488,13 +2506,13 @@
 \index{partial_sort@\tcode{partial_sort}}%
 \color{addclr}\begin{itemdecl}
 template<RandomAccessIterator Iter>
- requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@ &&
+ requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@ &&
            LessThanComparable<Iter::value_type>
   void partial_sort(Iter @\farg{first}@,
                     Iter @\farg{middle}@,
                     Iter @\farg{last}@);
-
-template<RandomAccessIterator Iter, @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+template<RandomAccessIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
   requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
   void partial_sort(Iter @\farg{first}@,
                     Iter @\farg{middle}@,
@@ -2605,7 +2623,8 @@
 \index{is_sorted@\tcode{is_sorted}}%
 \color{addclr}
 \begin{itemdecl}
-template<ForwardIterator Iter, @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+template<ForwardIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
   bool is_sorted(Iter @\farg{first}@, Iter @\farg{last}@,
                  Compare @\farg{comp}@);
 \end{itemdecl}
@@ -2622,7 +2641,8 @@
 template<ForwardIterator Iter>
   requires LessThanComparable<Iter::value_type>
   Iter is_sorted_until(Iter @\farg{first}@, Iter @\farg{last}@);
-template<ForwardIterator Iter, @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+template<ForwardIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
   Iter is_sorted_until(Iter @\farg{first}@, Iter @\farg{last}@,
                        Compare @\farg{comp}@);
 \end{itemdecl}
@@ -2649,9 +2669,11 @@
   void nth_element(Iter @\farg{first}@, Iter @\farg{nth}@,
                    Iter @\farg{last}@);
 
-template<RandomAccessIterator Iter,
- @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
- requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
+template<@\changedCCC{SwappableIterator<Iter>}{RandomAccessIterator Iter}@,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
+ requires @\removedCCC{SameType<Iter::value_type\&, Iter::reference> \&\& Swappable<Iter::value_type> \&\&}@
+ @\removedCCC{MoveConstructible<Iter::value_type> \&\& MoveAssignable<Iter::value_type>}@
+ @\addedCC{Swappable<Iter::reference>}@
   void nth_element(Iter @\farg{first}@, Iter @\farg{nth}@,
                    Iter @\farg{last}@, Compare @\farg{comp}@);
 \end{itemdecl}\color{black}
@@ -2941,11 +2963,9 @@
                 InIter2 @\farg{first2}@, InIter2 @\farg{last2}@,
                 OutIter @\farg{result}@);
 
-% revisit (mmarcus): not sure if changedCCC after texcolor is right
-% way to go here
 @\textcolor{addclr}{template}@<InputIterator InIter1, InputIterator InIter2,
          OutputIterator<auto, InIter1::value_type> OutIter,
- @\textcolor{addclr}{}@@\changedCCC{Predicate<auto, InIter1::value_type, InIter2::value_type>}{StrictWeakOrder<auto, InIter1::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, InIter1::value_type@\removedCCC{, InIter2::value_type}@> Compare>
   requires SameType<InIter1::value_type, InIter2::value_type>
   OutIter merge(InIter1 @\farg{first1}@, InIter1 @\farg{last1}@,
                 InIter2 @\farg{first2}@, InIter2 @\farg{last2}@,
@@ -3004,7 +3024,7 @@
                      Iter @\farg{last}@);
 
 template<BidirectionalIterator Iter,
- @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
   requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
   void inplace_merge(Iter @\farg{first}@,
                      Iter @\farg{middle}@,
@@ -3085,7 +3105,7 @@
                 Iter2 @\farg{first2}@, Iter2 @\farg{last2}@);
 
 template<InputIterator Iter1, InputIterator Iter2,
- @\changedCCC{Predicate<auto, Iter1::value_type, Iter2::value_type>}{StrictWeakOrder<auto, Iter1::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter1::value_type@\removedCCC{, Iter2::value_type}@> Compare>
   requires SameType<Iter1::value_type, Iter2::value_type>
   bool includes(Iter1 @\farg{first1}@, Iter1 @\farg{last1}@,
                 Iter2 @\farg{first2}@, Iter2 @\farg{last2}@,
@@ -3125,7 +3145,7 @@
 
 template<InputIterator InIter1, InputIterator InIter2,
          OutputIterator<auto, InIter1::value_type> OutIter,
- @\changedCCC{Predicate<auto, InIter1::value_type, InIter2::value_type>}{StrictWeakOrder<auto, InIter1::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, InIter1::value_type@\removedCCC{, InIter2::value_type}@> Compare>
   requires SameType<InIter1::value_type, InIter2::value_type>
   OutIter set_union(InIter1 @\farg{first1}@, InIter1 @\farg{last1}@,
                     InIter2 @\farg{first2}@, InIter2 @\farg{last2}@,
@@ -3174,9 +3194,7 @@
 
 template<InputIterator InIter1, InputIterator InIter2,
          OutputIterator<auto, InIter1::value_type> OutIter,
- @\changedCCC{Predicate<auto, InIter1::value_type,
- InIter2::value_type>}{StrictWeakOrder<auto,
- InIter1::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, InIter1::value_type@\removedCCC{, InIter2::value_type}@> Compare>
   requires SameType<InIter1::value_type, InIter2::value_type>
   OutIter set_intersection(InIter1 @\farg{first1}@, InIter1 @\farg{last1}@,
                            InIter2 @\farg{first2}@, InIter2 @\farg{last2}@,
@@ -3224,12 +3242,10 @@
 
 template<InputIterator InIter1, InputIterator InIter2,
          OutputIterator<auto, InIter1::value_type> OutIter,
- @\changedCCC{Predicate<auto, InIter1::value_type,
- InIter2::value_type>}{StrictWeakOrder<auto,
- InIter1::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, InIter1::value_type@\removedCCC{, InIter2::value_type}@> Compare>
   requires SameType<InIter1::value_type, InIter2::value_type>
   OutIter set_difference(InIter1 @\farg{first1}@, InIter1 @\farg{last1}@,
- @\textcolor{addclr}{}@InIter2 @\farg{first2}@, InIter2 @\farg{last2}@,
+ InIter2 @\farg{first2}@, InIter2 @\farg{last2}@,
                          OutIter @\farg{result}@, Compare @\farg{comp}@);
 \end{itemdecl}\color{black}
 
@@ -3287,9 +3303,7 @@
 
 template<InputIterator InIter1, InputIterator InIter2,
          OutputIterator<auto, InIter1::value_type> OutIter,
- @\changedCCC{Predicate<auto, InIter1::value_type,
- InIter2::value_type>}{StrictWeakOrder<auto,
- InIter1::value_type>}@ Compare>
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, InIter1::value_type@\removedCCC{, InIter2::value_type}@> Compare>
   requires SameType<InIter1::value_type, InIter2::value_type>
   OutIter set_symmetric_difference(InIter1 @\farg{first1}@, InIter1 @\farg{last1}@,
                                    InIter2 @\farg{first2}@, InIter2 @\farg{last2}@,
@@ -3375,7 +3389,8 @@
            LessThanComparable<Iter::value_type>
   void push_heap(Iter @\farg{first}@, Iter @\farg{last}@);
 
-template<RandomAccessIterator Iter, @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+template<RandomAccessIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
   requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
   void push_heap(Iter @\farg{first}@, Iter @\farg{last}@,
                  Compare @\farg{comp}@);
@@ -3415,7 +3430,8 @@
   requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@ && LessThanComparable<Iter::value_type>
   void pop_heap(Iter @\farg{first}@, Iter @\farg{last}@);
 
-template<RandomAccessIterator Iter, @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+template<RandomAccessIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
   requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
   void pop_heap(Iter @\farg{first}@, Iter @\farg{last}@,
                 Compare @\farg{comp}@);
@@ -3460,7 +3476,8 @@
            LessThanComparable<Iter::value_type>
   void make_heap(Iter @\farg{first}@, Iter @\farg{last}@);
 
-template<RandomAccessIterator Iter, @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+template<RandomAccessIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
   requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
   void make_heap(Iter @\farg{first}@, Iter @\farg{last}@,
                  Compare @\farg{comp}@);
@@ -3494,7 +3511,8 @@
   requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@ && LessThanComparable<Iter::value_type>
   void sort_heap(Iter @\farg{first}@, Iter @\farg{last}@);
 
-template<RandomAccessIterator Iter, @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+template<RandomAccessIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
   requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
   void sort_heap(Iter @\farg{first}@, Iter @\farg{last}@,
                  Compare @\farg{comp}@);
@@ -3540,8 +3558,9 @@
 
 \color{addclr}
 \begin{itemdecl}
-template<RandomAccessIterator Iter, @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
- bool is_heap(Iter first, Iter last, Compare comp);
+template<RandomAccessIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
+ bool is_heap(Iter @\farg{first}@, Iter @\farg{last}@, Compare @\farg{comp}@);
 \end{itemdecl}
 \color{black}
 
@@ -3554,9 +3573,10 @@
 \begin{itemdecl}
 template<RandomAccessIterator Iter>
   Iter is_heap_until(Iter first, Iter last);
-template<RandomAccessIterator Iter, @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
- Iter is_heap_until(Iter first, Iter last,
- Compare comp);
+template<RandomAccessIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
+ Iter is_heap_until(Iter @\farg{first}@, Iter @\farg{last}@,
+ Compare @\farg{comp}@);
 \end{itemdecl}
 \color{black}
 
@@ -3845,7 +3865,8 @@
   requires LessThanComparable<Iter::reference>
   Iter min_element(Iter @\farg{first}@, Iter @\farg{last}@);
 
-template<ForwardIterator Iter, @\changedCCC{Predicate<auto, Iter::reference, Iter::reference>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+template<ForwardIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::@\changedCCC{reference}{value_type}@@\removedCCC{, Iter::reference}@> Compare>
   Iter min_element(Iter @\farg{first}@, Iter @\farg{last}@,
                    Compare @\farg{comp}@);
 \end{itemdecl}\color{black}
@@ -3883,7 +3904,8 @@
   requires LessThanComparable<Iter::reference>
   Iter max_element(Iter @\farg{first}@, Iter @\farg{last}@);
 
-template<ForwardIterator Iter, @\changedCCC{Predicate<auto, Iter::reference, Iter::reference>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+template<ForwardIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::@\changedCCC{reference}{value_type}@@\removedCCC{, Iter::reference}@> Compare>
   Iter max_element(Iter @\farg{first}@, Iter @\farg{last}@,
                    Compare @\farg{comp}@);
 \end{itemdecl}\color{black}
@@ -3922,7 +3944,8 @@
   requires LessThanComparable<Iter::value_type>
   pair<Iter, Iter>
     minmax_element(Iter @\farg{first}@, Iter @\farg{last}@);
-template<ForwardIterator Iter, @\changedCCC{Predicate<auto, Iter::value_type, Iter::value_type>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+template<ForwardIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::value_type@\removedCCC{, Iter::value_type}@> Compare>
   pair<Iter, Iter>
     minmax_element(Iter @\farg{first}@, Iter @\farg{last}@, Compare @\farg{comp}@);
 \end{itemdecl}
@@ -4010,9 +4033,10 @@
            @\textcolor{addclr}{LessThanComparable}@<Iter::reference>
   bool next_permutation(Iter @\farg{first}@, Iter @\farg{last}@);
 
-template<BidirectionalIterator Iter, @\changedCCC{Predicate<auto, Iter::reference, Iter::reference>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+template<BidirectionalIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::@\changedCCC{reference}{value_type}@@\removedCCC{, Iter::reference}@> Compare>
   requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
- @\textcolor{addclr}{bool}@ next_permutation(Iter @\farg{first}@, Iter @\farg{last}@, Compare @\farg{comp}@);
+ @\textcolor{addclr}{}@bool next_permutation(Iter @\farg{first}@, Iter @\farg{last}@, Compare @\farg{comp}@);
 \end{itemdecl}\color{black}
 
 \begin{itemdescr}
@@ -4050,7 +4074,8 @@
            @\textcolor{addclr}{}@LessThanComparable<Iter::reference>
   bool prev_permutation(Iter @\farg{first}@, Iter @\farg{last}@);
 
-template<BidirectionalIterator Iter, @\changedCCC{Predicate<auto, Iter::reference, Iter::reference>}{StrictWeakOrder<auto, Iter::value_type>}@ Compare>
+template<BidirectionalIterator Iter,
+ @\changedCCC{Predicate}{StrictWeakOrder}@<auto, Iter::@\changedCCC{reference}{value_type}@@\removedCCC{, Iter::reference}@> Compare>
   requires @\changedCCC{SwappableIterator<Iter>}{Swappable<Iter::reference>}@
   bool prev_permutation(Iter @\farg{first}@, Iter @\farg{last}@, Compare @\farg{comp}@);
 \end{itemdecl}\color{black}


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk