Boost logo

Boost-Commit :

From: dgregor_at_[hidden]
Date: 2008-06-27 15:23:40


Author: dgregor
Date: 2008-06-27 15:23:40 EDT (Fri, 27 Jun 2008)
New Revision: 46789
URL: http://svn.boost.org/trac/boost/changeset/46789

Log:
Update unique_copy requirements
Text files modified:
   sandbox/committee/concepts/stdlib/clib-algorithms.tex | 98 ++++++++++++++++++++++++---------------
   1 files changed, 59 insertions(+), 39 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-27 15:23:40 EDT (Fri, 27 Jun 2008)
@@ -290,7 +290,7 @@
     void replace_if(Iter @\farg{first}@, Iter @\farg{last}@,
                     Pred @\farg{pred}@, const T& @\farg{new_value}@);
   template<InputIterator InIter, typename OutIter, class T>
- requires OutputIterator<_OutIter, InIter::@\changedCCC{value_type}{reference}@>
+ requires OutputIterator<OutIter, InIter::@\changedCCC{value_type}{reference}@>
           && @\changedCCC{HasCopyAssign}{OutputIterator}@<Iter@\removedCCC{::reference}@, @\changedCCC{T}{const T\&}@>
           && HasEqualTo<InIter::@\changedCCC{reference}{value_type}@, T>
     OutIter replace_copy(InIter @\farg{first}@, InIter @\farg{last}@,
@@ -351,37 +351,47 @@
           @\addedCC{\&\& CopyConstructible<Pred>}@
     Iter unique(Iter @\farg{first}@, Iter @\farg{last}@,
                 Pred @\farg{pred}@);
- template<InputIterator InIter, OutputIterator<auto, InIter::value_type> OutIter>
- requires EqualityComparable<InIter::value_type> && CopyAssignable<InIter::value_type> &&
- @\textcolor{addclr}{CopyConstructible}@<InIter::value_type> && !ForwardIterator<InIter> &&
- !MutableForwardIterator<OutIter>
- OutIter
- unique_copy(InIter @\farg{first}@, InIter @\farg{last}@,
- OutIter @\farg{result}@);
+ template<InputIterator InIter, @\changedCCC{OutputIterator<auto, InIter::value_type>}{typename}@ OutIter>
+ requires @\addedCC{OutputIterator<OutIter, InIter::reference>}@
+ @\addedCC{\&\& OutputIterator<OutIter, const InIter::value_type\&>}@
+ @\addedCC{\&\&}@ EqualityComparable<InIter::value_type>
+ && CopyAssignable<InIter::value_type>
+ && CopyConstructible<InIter::value_type>
+ && !ForwardIterator<InIter>
+ && !@\removedCCC{Mutable}@ForwardIterator<OutIter>
+ OutIter unique_copy(InIter @\farg{first}@, InIter @\farg{last}@,
+ OutIter @\farg{result}@);
   template<ForwardIterator InIter, OutputIterator<auto, InIter::@\changedCCC{value_type}{reference}@> OutIter>
- requires EqualityComparable<InIter::reference>
+ requires EqualityComparable<InIter::@\changedCCC{reference}{value_type}@>
     OutIter unique_copy(InIter @\farg{first}@, InIter @\farg{last}@,
                         OutIter @\farg{result}@);
- template<InputIterator InIter, MutableForwardIterator OutIter>
- requires HasEqualTo<OutIter::reference, InIter::@\changedCCC{value_type}{reference}@> &&
- Has@\removedCCC{Copy}@Assign<OutIter::reference, InIter::reference> &&
- !ForwardIterator<InIter>
+ template<InputIterator InIter, @\removedCCC{Mutable}@ForwardIterator OutIter>
+ requires @\changedCCC{HasCopyAssign}{OutputIterator}@<OutIter@\removedCCC{::reference}@, InIter::reference>
+ && HasEqualTo<OutIter::@\changedCCC{reference}{value_type}@, InIter::value_type>
+ && !ForwardIterator<InIter>
     OutIter unique_copy(InIter @\farg{first}@, InIter @\farg{last}@,
                         OutIter @\farg{result}@);
- template<InputIterator InIter, OutputIterator<auto, InIter::value_type> OutIter,
+ template<InputIterator InIter, @\changedCCC{OutputIterator<auto, InIter::value_type>}{typename}@ OutIter,
            Predicate<auto, InIter::value_type, InIter::value_type> Pred>
- requires CopyAssignable<InIter::value_type> && CopyConstructible<InIter::value_type> &&
- !ForwardIterator<InIter> && !MutableForwardIterator<OutIter>
+ requires @\addedCC{OutputIterator<OutIter, InIter::reference>}@
+ @\addedCC{\&\& OutputIterator<OutIter, const InIter::value_type\&>}@
+ @\addedCC{\&\&}@ CopyAssignable<InIter::value_type>
+ && CopyConstructible<InIter::value_type>
+ @\addedCC{\&\& CopyConstructible<Pred>}@
+ && !ForwardIterator<InIter>
+ && !@\removedCCC{Mutable}@ForwardIterator<OutIter>
     OutIter unique_copy(InIter @\farg{first}@, InIter @\farg{last}@,
                         OutIter @\farg{result}@, Pred @\farg{pred}@);
   template<ForwardIterator InIter, OutputIterator<auto, InIter::@\changedCCC{value_type}{reference}@> OutIter,
            Predicate<auto, InIter::@\changedCCC{reference}{value_type}@, InIter::@\changedCCC{reference}{value_type}@> Pred>
+ @\addedCC{requires CopyConstructible<Pred>}@
     OutIter unique_copy(InIter @\farg{first}@, InIter @\farg{last}@,
                         OutIter @\farg{result}@);
- template<InputIterator InIter, MutableForwardIterator OutIter,
+ template<InputIterator InIter, @\removedCCC{Mutable}@ForwardIterator OutIter,
            Predicate<auto, OutIter::@\changedCCC{reference}{value_type}@, InIter::@\changedCCC{reference}{value_type}@> Pred>
- requires Has@\removedCCC{Copy}@Assign<OutIter::reference, InIter::reference> &&
- !ForwardIterator<InIter>
+ requires @\changedCCC{HasCopyAssign}{OutputIterator}@<OutIter@\removedCCC{::reference}@, InIter::reference>
+ @\addedCC{\&\& CopyConstructible<Pred>}@
+ && !ForwardIterator<InIter>
     OutIter unique_copy(InIter @\farg{first}@, InIter @\farg{last}@,
                         OutIter @\farg{result}@, Pred @\farg{pred}@);
 
@@ -1845,7 +1855,7 @@
 \index{replace_copy_if@\tcode{replace_copy_if}}%
 \color{addclr}\begin{itemdecl}
 template<InputIterator InIter, typename OutIter, class T>
- requires OutputIterator<_OutIter, InIter::@\changedCCC{value_type}{reference}@>
+ requires OutputIterator<OutIter, InIter::@\changedCCC{value_type}{reference}@>
         && @\changedCCC{HasCopyAssign}{OutputIterator}@<Iter@\removedCCC{::reference}@, @\changedCCC{T}{const T\&}@>
         && HasEqualTo<InIter::@\changedCCC{reference}{value_type}@, T>
   OutIter replace_copy(InIter @\farg{first}@, InIter @\farg{last}@,
@@ -2132,42 +2142,52 @@
 \index{unique_copy@\tcode{unique_copy}}%
 \color{addclr}
 \begin{itemdecl}
-template<InputIterator InIter, OutputIterator<auto, InIter::value_type> OutIter>
- requires EqualityComparable<InIter::value_type> && CopyAssignable<InIter::value_type> &&
- CopyConstructible<InIter::value_type> && !ForwardIterator<InIter> &&
- !MutableForwardIterator<OutIter>
- @\textcolor{addclr}{OutIter}@
- unique_copy(InIter @\farg{first}@, InIter @\farg{last}@,
- OutIter @\farg{result}@);
+template<InputIterator InIter, @\changedCCC{OutputIterator<auto, InIter::value_type>}{typename}@ OutIter>
+ requires @\addedCC{OutputIterator<OutIter, InIter::reference>}@
+ @\addedCC{\&\& OutputIterator<OutIter, const InIter::value_type\&>}@
+ @\addedCC{\&\&}@ EqualityComparable<InIter::value_type>
+ && CopyAssignable<InIter::value_type>
+ && CopyConstructible<InIter::value_type>
+ && !ForwardIterator<InIter>
+ && !@\removedCCC{Mutable}@ForwardIterator<OutIter>
+ OutIter unique_copy(InIter @\farg{first}@, InIter @\farg{last}@,
+ OutIter @\farg{result}@);
 
 template<ForwardIterator InIter, OutputIterator<auto, InIter::@\changedCCC{value_type}{reference}@> OutIter>
- requires EqualityComparable<InIter::reference>
+ requires EqualityComparable<InIter::@\changedCCC{reference}{value_type}@>
   OutIter unique_copy(InIter @\farg{first}@, InIter @\farg{last}@,
                       OutIter @\farg{result}@);
 
-@\textcolor{addclr}{template}@<InputIterator InIter, MutableForwardIterator OutIter>
- requires HasEqualTo<OutIter::reference, InIter::@\changedCCC{value_type}{reference}@> &&
- Has@\removedCCC{Copy}@Assign<OutIter::reference, InIter::reference> &&
- !ForwardIterator<InIter>
+template<InputIterator InIter, @\removedCCC{Mutable}@ForwardIterator OutIter>
+ requires @\changedCCC{HasCopyAssign}{OutputIterator}@<OutIter@\removedCCC{::reference}@, InIter::reference>
+ && HasEqualTo<OutIter::@\changedCCC{reference}{value_type}@, InIter::value_type>
+ && !ForwardIterator<InIter>
   OutIter unique_copy(InIter @\farg{first}@, InIter @\farg{last}@,
                       OutIter @\farg{result}@);
 
-template<InputIterator InIter, OutputIterator<auto, InIter::value_type> OutIter,
+template<InputIterator InIter, @\changedCCC{OutputIterator<auto, InIter::value_type>}{typename}@ OutIter,
          Predicate<auto, InIter::value_type, InIter::value_type> Pred>
- requires CopyAssignable<InIter::value_type> && CopyConstructible<InIter::value_type> &&
- !ForwardIterator<InIter> && !MutableForwardIterator<OutIter>
+ requires @\addedCC{OutputIterator<OutIter, InIter::reference>}@
+ @\addedCC{\&\& OutputIterator<OutIter, const InIter::value_type\&>}@
+ @\addedCC{\&\&}@ CopyAssignable<InIter::value_type>
+ && CopyConstructible<InIter::value_type>
+ @\addedCC{\&\& CopyConstructible<Pred>}@
+ && !ForwardIterator<InIter>
+ && !@\removedCCC{Mutable}@ForwardIterator<OutIter>
   OutIter unique_copy(InIter @\farg{first}@, InIter @\farg{last}@,
- @\textcolor{addclr}{OutIter}@ @\farg{result}@, Pred @\farg{pred}@);
+ OutIter @\farg{result}@, Pred @\farg{pred}@);
 
 template<ForwardIterator InIter, OutputIterator<auto, InIter::@\changedCCC{value_type}{reference}@> OutIter,
          Predicate<auto, InIter::@\changedCCC{reference}{value_type}@, InIter::@\changedCCC{reference}{value_type}@> Pred>
+ @\addedCC{requires CopyConstructible<Pred>}@
   OutIter unique_copy(InIter @\farg{first}@, InIter @\farg{last}@,
                       OutIter @\farg{result}@);
 
-template<InputIterator InIter, MutableForwardIterator OutIter,
+template<InputIterator InIter, @\removedCCC{Mutable}@ForwardIterator OutIter,
          Predicate<auto, OutIter::@\changedCCC{reference}{value_type}@, InIter::@\changedCCC{reference}{value_type}@> Pred>
- requires Has@\removedCCC{Copy}@Assign<OutIter::reference, InIter::reference> &&
- !ForwardIterator<InIter>
+ requires @\changedCCC{HasCopyAssign}{OutputIterator}@<OutIter@\removedCCC{::reference}@, InIter::reference>
+ @\addedCC{\&\& CopyConstructible<Pred>}@
+ && !ForwardIterator<InIter>
   OutIter unique_copy(InIter @\farg{first}@, InIter @\farg{last}@,
                       OutIter @\farg{result}@, Pred @\farg{pred}@);
 \end{itemdecl}


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