Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r48713 - sandbox/committee/concepts/stdlib
From: dgregor_at_[hidden]
Date: 2008-09-10 19:16:52


Author: dgregor
Date: 2008-09-10 19:16:52 EDT (Wed, 10 Sep 2008)
New Revision: 48713
URL: http://svn.boost.org/trac/boost/changeset/48713

Log:
Introduce ValueType concept
Text files modified:
   sandbox/committee/concepts/stdlib/clib-concepts.tex | 59 +++++-
   sandbox/committee/concepts/stdlib/clib-containers.tex | 339 ++++++++++++++++++++-------------------
   2 files changed, 215 insertions(+), 183 deletions(-)

Modified: sandbox/committee/concepts/stdlib/clib-concepts.tex
==============================================================================
--- sandbox/committee/concepts/stdlib/clib-concepts.tex (original)
+++ sandbox/committee/concepts/stdlib/clib-concepts.tex 2008-09-10 19:16:52 EDT (Wed, 10 Sep 2008)
@@ -105,12 +105,6 @@
 \item Several updates to properly cope with abstract classes, thanks
   to Daniel Kr\"ugler:
   \begin{itemize}
- \item Don't implicitly define \tcode{Returnable} concept maps for
- abstract classes.
- \item \tcode{HasDestructor} does not refine \tcode{VariableType},
- since abstract classes can have destructors (but aren't
- \tcode{VariableType}s). Similarly for
- \tcode{ExplicitlyConvertible}.
   \item Add a restriction to [concept.transform] that prohibits users
     from adding concept maps for these concepts.
   \end{itemize}
@@ -138,7 +132,24 @@
     \tcode{ReferentType} are restricted to \emph{cv-qualified}
     function types. Thanks to
     Peter Dimov for the acute observation!
-\end{itemize}
+ \item Fixed the requirements when dealing with abstract classes:
+ \begin{itemize}
+ \item Abstract classes aren't \tcode{VariableType}s (concepts
+ issue \#28) or \tcode{Returnable}.
+ \item \tcode{ObjectType} is not a \tcode{VariableType}, because
+ you can't have a variable with abstract class type. However, an
+ \tcode{ObjectType} is a \tcode{ReferentType} and a
+ \tcode{PointeeType}.
+ \item \tcode{HasDestructor} does not refine \tcode{VariableType},
+ since abstract classes can have destructors (but aren't
+ \tcode{VariableType}s). Similarly for
+ \tcode{ExplicitlyConvertible}.
+ \end{itemize}
+ \item Added \tcode{ValueType} concept; see c++std-lib-22195. The
+ concepts \tcode{Union}, \tcode{TrivialType},
+ \tcode{StandardLayoutType}, \tcode{LiteralType}, and
+ \tcode{NonTypeTemplateParameterType} all refine this new concept.
+ \end{itemize}
 
 \end{titlepage}
 
@@ -229,6 +240,7 @@
   concept VariableType<typename T> { }
   concept ObjectType<typename T> @\textit{see below}@;
   concept FunctionType<typename T> @\textit{see below}@;
+ concept ValueType<typename T> @\textit{see below}@;
   concept ClassType<typename T> @\textit{see below}@;
   concept Class<typename T> @\textit{see below}@;
   concept Union<typename T> @\textit{see below}@;
@@ -432,7 +444,7 @@
 \pnum
 \mbox{\requires}
 for every type \mbox{\tcode{T}} that is an object type, a
- cv-qualified function type, or a reference type, a
+ cv-unqualified function type, or a reference type, a
   concept map \mbox{\tcode{ReferentType}} shall be implicitly defined
   in namespace \mbox{\tcode{std}}.
 \end{itemdescr}
@@ -448,13 +460,13 @@
 
 \pnum
 \addedConcepts{\mbox{\requires} for every type \mbox{\tcode{T}} that
- is an object type or reference type, a concept map
+ is an object type or reference type, but not an abstract class, a concept map
   \mbox{\tcode{VariableType<T>}} shall be implicitly defined in
 namespace \mbox{\tcode{std}}.}
 \end{itemdescr}
 
 \begin{itemdecl}
-concept ObjectType<typename T> : VariableType<T>@\addedConcepts{, MemberPointeeType<T>} { }
+concept ObjectType<typename T> : ReferentType<T>, PointeeType<T> { }
 \end{itemdecl}
 
 \begin{itemdescr}
@@ -482,6 +494,23 @@
 \end{itemdescr}
 
 \begin{itemdecl}
+concept ValueType<typename T> : ObjectType<T>, VariableType<T>, MemberPointeeType<T> { }
+\end{itemdecl}
+
+\begin{itemdescr}
+\pnum
+\addedConcepts{\mbox{\reallynote} describes value types, for which
+ objects, variables, references, pointers, and pointers-to-members
+ can be created.}
+
+\pnum
+\addedConcepts{\mbox{\requires} for every type \mbox{\tcode{T}} that
+ is an object type but not an abstract class, a concept map
+ \mbox{\tcode{ValueType<T>}} shall be implicitly defined in namespace
+ \mbox{\tcode{std}}.
+\end{itemdescr}
+
+\begin{itemdecl}
 concept ClassType<typename T> : ObjectType<T> { }
 \end{itemdecl}
 
@@ -512,7 +541,7 @@
 \end{itemdescr}
 
 \begin{itemdecl}
-concept Union<typename T> : ClassType<T> { }
+concept Union<typename T> : ClassType<T>, ValueType<T> { }
 \end{itemdecl}
 
 \begin{itemdescr}
@@ -526,7 +555,7 @@
 \end{itemdescr}
 
 \begin{itemdecl}
-concept TrivialType<typename T> : ObjectType<T> { }
+concept TrivialType<typename T> : ObjectType<T>, ValueType<T> { }
 \end{itemdecl}
 
 \begin{itemdescr}
@@ -540,7 +569,7 @@
 \end{itemdescr}
 
 \begin{itemdecl}
-concept StandardLayoutType<typename T> : ObjectType<T> { }
+concept StandardLayoutType<typename T> : ObjectType<T>, ValueType<T> { }
 \end{itemdecl}
 
 \begin{itemdescr}
@@ -555,7 +584,7 @@
 \end{itemdescr}
 
 \begin{itemdecl}
-concept LiteralType<typename T> : ObjectType<T> { }
+concept LiteralType<typename T> : ObjectType<T>, ValueType<T> { }
 \end{itemdecl}
 
 \begin{itemdescr}
@@ -598,7 +627,7 @@
 \end{itemdescr}
 
 \begin{itemdecl}
-concept NonTypeTemplateParameterType<typename T> : VariableType<T> { }
+concept NonTypeTemplateParameterType<typename T> : ValueType<T> { }
 \end{itemdecl}
 
 \begin{itemdescr}

Modified: sandbox/committee/concepts/stdlib/clib-containers.tex
==============================================================================
--- sandbox/committee/concepts/stdlib/clib-containers.tex (original)
+++ sandbox/committee/concepts/stdlib/clib-containers.tex 2008-09-10 19:16:52 EDT (Wed, 10 Sep 2008)
@@ -97,6 +97,9 @@
   \tcode{reference} types of a container's iterators to the
   \tcode{reference} and \tcode{const_reference} types of the
   container.
+\item Use the new \tcode{ValueType} concept, rather than
+ \tcode{ObjectType}, to constrain the container's element types, to
+ properly exclude abstract classes.
 \end{itemize}
 
 \end{titlepage}
@@ -947,7 +950,7 @@
 
 \begin{itemdecl}
 concept Container<typename C> {
- ObjectType value_type = typename C::value_type;
+ ValueType value_type = typename C::value_type;
   typename reference = typename C::reference;
   typename const_reference = typename C::const_reference;
   UnsignedIntegralLike size_type = typename C::size_type;
@@ -1127,7 +1130,7 @@
 \color{addclr}
 \begin{itemdecl}
 auto concept MemberContainer<typename C> {
- ObjectType value_type = typename C::value_type;
+ ValueType value_type = typename C::value_type;
   typename reference = typename C::reference;
   typename const_reference = typename C::const_reference;
   UnsignedIntegralLike size_type = typename C::size_type;
@@ -1502,7 +1505,7 @@
 \index{array@\tcode{<array>}}%
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ T, size_t N >
+ template <@\changedConcepts{class}{ValueType}@ T, size_t N >
     @\addedConcepts{requires NothrowDestructible<T>}@
     struct array;
   template <@\changedConcepts{class}{EqualityComparable}@ T, size_t N>
@@ -1542,7 +1545,7 @@
 
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{RandomAccessAllocator}@ Alloc@\removedConcepts{ator}@ = allocator<T> >
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{RandomAccessAllocator}@ Alloc@\removedConcepts{ator}@ = allocator<T> >
     @\addedConcepts{requires NothrowDestructible<T>}@
     class deque;
   template <@\changedConcepts{class}{EqualityComparable}@ T, class Alloc@\removedConcepts{ator}@>
@@ -1557,11 +1560,11 @@
     bool operator>=(const deque<T,Alloc@\removedConcepts{ator}@>& x, const deque<T,Alloc@\removedConcepts{ator}@>& y);
   template <@\changedConcepts{class}{LessThanComparable}@ T, class Alloc@\removedConcepts{ator}@>
     bool operator<=(const deque<T,Alloc@\removedConcepts{ator}@>& x, const deque<T,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(deque<T,Alloc@\removedConcepts{ator}@>& x, deque<T,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(deque<T,Alloc@\removedConcepts{ator}@>&& x, deque<T,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(deque<T,Alloc@\removedConcepts{ator}@>& x, deque<T,Alloc@\removedConcepts{ator}@>&& y);
 }
 \end{codeblock}
@@ -1571,7 +1574,7 @@
 
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Allocator}@ Alloc@\removedConcepts{ator}@ = allocator<T> >
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Allocator}@ Alloc@\removedConcepts{ator}@ = allocator<T> >
     @\addedConcepts{requires NothrowDestructible<T>}@
     class forward_list;
   template <@\changedConcepts{class}{EqualityComparable}@ T, class Alloc@\removedConcepts{ator}@>
@@ -1586,7 +1589,7 @@
     bool operator>=(const forward_list<T,Alloc@\removedConcepts{ator}@>& x, const forward_list<T,Alloc@\removedConcepts{ator}@>& y);
   template <@\changedConcepts{class}{LessThanComparable}@ T, class Alloc@\removedConcepts{ator}@>
     bool operator<=(const forward_list<T,Alloc@\removedConcepts{ator}@>& x, const forward_list<T,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(forward_list<T,Alloc@\removedConcepts{ator}@>& x, forward_list<T,Alloc@\removedConcepts{ator}@>& y);
 }
 \end{codeblock}
@@ -1596,7 +1599,7 @@
 
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Allocator}@ Alloc@\removedConcepts{ator}@ = allocator<T> >
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Allocator}@ Alloc@\removedConcepts{ator}@ = allocator<T> >
     @\addedConcepts{requires NothrowDestructible<T>}@
     class list;
   template <@\changedConcepts{class}{EqualityComparable}@ T, class Alloc@\removedConcepts{ator}@>
@@ -1611,11 +1614,11 @@
     bool operator>=(const list<T,Alloc@\removedConcepts{ator}@>& x, const list<T,Alloc@\removedConcepts{ator}@>& y);
   template <@\changedConcepts{class}{LessThanComparable}@ T, class Alloc@\removedConcepts{ator}@>
     bool operator<=(const list<T,Alloc@\removedConcepts{ator}@>& x, const list<T,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(list<T,Alloc@\removedConcepts{ator}@>& x, list<T,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(list<T,Alloc@\removedConcepts{ator}@>&& x, list<T,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(list<T,Alloc@\removedConcepts{ator}@>& x, list<T,Alloc@\removedConcepts{ator}@>&& y);
 }
 \end{codeblock}
@@ -1625,7 +1628,7 @@
 
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ T, class Cont@\removedConcepts{ainer}@ = deque<T> >
+ template <@\changedConcepts{class}{ValueType}@ T, class Cont@\removedConcepts{ainer}@ = deque<T> >
     @\addedConcepts{requires FrontInsertionContainer<Cont> \&\& BackInsertionContainer<Cont>}@
           @\addedConcepts{\&\& SameType<T, Cont::value_type>}@
           @\addedConcepts{\&\& NothrowDestructible<Cont>}@
@@ -1642,24 +1645,24 @@
     bool operator>=(const queue<T, Cont@\removedConcepts{ainer}@>& x,const queue<T, Cont@\removedConcepts{ainer}@>& y);
   template <class T, @\changedConcepts{class}{LessThanComparable}@ Cont@\removedConcepts{ainer}@>
     bool operator<=(const queue<T, Cont@\removedConcepts{ainer}@>& x,const queue<T, Cont@\removedConcepts{ainer}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
     void swap(queue<T,Cont@\removedConcepts{ainer}@>& x, queue<T,Cont@\removedConcepts{ainer}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
     void swap(queue<T,Cont@\removedConcepts{ainer}@>&& x, queue<T,Cont@\removedConcepts{ainer}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
     void swap(queue<T,Cont@\removedConcepts{ainer}@>& x, queue<T,Cont@\removedConcepts{ainer}@>&& y);
 
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{BackInsertionContainer}@ Cont@\removedConcepts{ainer}@ = vector<T>,
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{BackInsertionContainer}@ Cont@\removedConcepts{ainer}@ = vector<T>,
         @\changedConcepts{{class}}{StrictWeakOrder<auto, T>}@ Compare = less<typename Cont@\removedConcepts{ainer}@::value_type> >
     @\addedConcepts{requires SameType<Cont::value_type, T> \&\& RandomAccessIterator<Cont::iterator>}@
           @\addedConcepts{\&\& ShuffleIterator<Cont::iterator> \&\& CopyConstructible<Compare>}@
           @\addedConcepts{\&\& NothrowDestructible<Cont>}@
   class priority_queue;
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@, @\changedConcepts{class}{Swappable}@ Compare>
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@, @\changedConcepts{class}{Swappable}@ Compare>
     void swap(priority_queue<T, Cont@\removedConcepts{ainer}@, Compare>& x, priority_queue<T, Cont@\removedConcepts{ainer}@, Compare>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@, @\changedConcepts{class}{Swappable}@ Compare>
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@, @\changedConcepts{class}{Swappable}@ Compare>
     void swap(priority_queue<T, Cont@\removedConcepts{ainer}@, Compare>&& x, priority_queue<T, Cont@\removedConcepts{ainer}@, Compare>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@, @\changedConcepts{class}{Swappable}@ Compare>
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@, @\changedConcepts{class}{Swappable}@ Compare>
     void swap(priority_queue<T, Cont@\removedConcepts{ainer}@, Compare>& x, priority_queue<T, Cont@\removedConcepts{ainer}@, Compare>&& y);
 }
 \end{codeblock}
@@ -1669,7 +1672,7 @@
 
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{BackInsertionContainer}@ Cont@\removedConcepts{ainer}@ = deque<T> >
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{BackInsertionContainer}@ Cont@\removedConcepts{ainer}@ = deque<T> >
     @\addedConcepts{requires SameType<Cont::value_type, T>}@
           @\addedConcepts{\&\& NothrowDestructible<Cont>}@
     class stack;
@@ -1685,11 +1688,11 @@
     bool operator>=(const stack<T, Cont@\removedConcepts{ainer}@>& x,const stack<T, Cont@\removedConcepts{ainer}@>& y);
   template <class T, @\changedConcepts{class}{LessThanComparable}@ Cont@\removedConcepts{ainer}@>
     bool operator<=(const stack<T, Cont@\removedConcepts{ainer}@>& x,const stack<T, Cont@\removedConcepts{ainer}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
     void swap(stack<T,@\changedConcepts{Allocator}{Cont}@>& x, stack<T, @\changedConcepts{Allocator}{Cont}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
     void swap(stack<T, Cont@\removedConcepts{ainer}@>&& x, stack<T, Cont@\removedConcepts{ainer}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
     void swap(stack<T, Cont@\removedConcepts{ainer}@>& x, stack<T, Cont@\removedConcepts{ainer}@>&& y);
 }
 \end{codeblock}
@@ -1699,7 +1702,7 @@
 
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{RandomAccessAllocator}@ Alloc@\removedConcepts{ator}@ = allocator<T> >
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{RandomAccessAllocator}@ Alloc@\removedConcepts{ator}@ = allocator<T> >
     @\addedConcepts{requires MoveConstructible<T>}@
     class vector;
   template <@\changedConcepts{class}{EqualityComparable}@ T, class Alloc@\removedConcepts{ator}@>
@@ -1714,11 +1717,11 @@
     bool operator>=(const vector<T,Alloc@\removedConcepts{ator}@>& x,const vector<T,Alloc@\removedConcepts{ator}@>& y);
   template <@\changedConcepts{class}{LessThanComparable}@ T, class Alloc@\removedConcepts{ator}@>
     bool operator<=(const vector<T,Alloc@\removedConcepts{ator}@>& x,const vector<T,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(vector<T,Alloc@\removedConcepts{ator}@>& x, vector<T,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(vector<T,Alloc@\removedConcepts{ator}@>&& x, vector<T,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(vector<T,Alloc@\removedConcepts{ator}@>& x, vector<T,Alloc@\removedConcepts{ator}@>&& y);
 
   template <@\changedConcepts{class}{RandomAccessAllocator}@ Alloc@\removedConcepts{ator}@> class vector<bool,Alloc@\removedConcepts{ator}@>;
@@ -1766,7 +1769,7 @@
 \index{max_size@\tcode{max_size}!array@\tcode{array}}%
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ T, size_t N >
+ template <@\changedConcepts{class}{ValueType}@ T, size_t N >
   @\addedConcepts{requires NothrowDestructible<T>}@
   struct array {
     // types:
@@ -1986,7 +1989,7 @@
 
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{RandomAccessAllocator}@ Alloc@\removedConcepts{ator}@ = allocator<T> >
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{RandomAccessAllocator}@ Alloc@\removedConcepts{ator}@ = allocator<T> >
   @\addedConcepts{requires NothrowDestructible<T>}@
   class deque {
   public:
@@ -2122,11 +2125,11 @@
     bool operator<=(const deque<T,Alloc@\removedConcepts{ator}@>& x, const deque<T,Alloc@\removedConcepts{ator}@>& y);
 
   // specialized algorithms:
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(deque<T,Alloc@\removedConcepts{ator}@>& x, deque<T,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(deque<T,Alloc@\removedConcepts{ator}@>&& x, deque<T,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(deque<T,Alloc@\removedConcepts{ator}@>& x, deque<T,Alloc@\removedConcepts{ator}@>&& y);
 
   @\removedConcepts{template <class T, class Alloc}@
@@ -2376,11 +2379,11 @@
 \rSec3[deque.special]{\tcode{deque}\ specialized algorithms}
 
 \begin{itemdecl}
-template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
   void swap(deque<T,Alloc@\removedConcepts{ator}@>& x, deque<T,Alloc@\removedConcepts{ator}@>& y);
-template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
   void swap(deque<T,Alloc@\removedConcepts{ator}@>&& x, deque<T,Alloc@\removedConcepts{ator}@>& y);
-template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
   void swap(deque<T,Alloc@\removedConcepts{ator}@>& x, deque<T,Alloc@\removedConcepts{ator}@>&& y);
 \end{itemdecl}
 
@@ -2402,7 +2405,7 @@
 
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Allocator}@ Alloc@\removedConcepts{ator}@ = allocator<T> >
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Allocator}@ Alloc@\removedConcepts{ator}@ = allocator<T> >
   @\addedConcepts{requires NothrowDestructible<T>}@
   class forward_list {
   public:
@@ -2542,11 +2545,11 @@
     bool operator<=(const forward_list<T,Alloc@\removedConcepts{ator}@>& x, const forward_list<T,Alloc@\removedConcepts{ator}@>& y);
 
   // \ref{forwardlist.spec} specialized algorithms:
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(forward_list<T,Alloc@\removedConcepts{ator}@>& x, forward_list<T,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(forward_list<T,Alloc@\removedConcepts{ator}@>&& x, forward_list<T,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(forward_list<T,Alloc@\removedConcepts{ator}@>& x, forward_list<T,Alloc@\removedConcepts{ator}@>&& y);
 }
 \end{codeblock}
@@ -2950,11 +2953,11 @@
 \rSec3[forwardlist.spec]{\tcode{forward_list} specialized algorithms}
 
 \begin{itemdecl}
-template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
   void swap(forward_list<T,Alloc@\removedConcepts{ator}@>& x, forward_list<T,Alloc@\removedConcepts{ator}@>& y);
-template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
   void swap(forward_list<T,Alloc@\removedConcepts{ator}@>&& x, forward_list<T,Alloc@\removedConcepts{ator}@>& y);
-template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
   void swap(forward_list<T,Alloc@\removedConcepts{ator}@>& x, forward_list<T,Alloc@\removedConcepts{ator}@>&& y);
 \end{itemdecl}
 
@@ -2998,7 +3001,7 @@
 
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Allocator}@ Alloc@\removedConcepts{ator}@ = allocator<T> >
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Allocator}@ Alloc@\removedConcepts{ator}@ = allocator<T> >
   @\addedConcepts{requires NothrowDestructible<T>}@
   class list {
   public:
@@ -3149,11 +3152,11 @@
     bool operator<=(const list<T,Alloc@\removedConcepts{ator}@>& @\farg{x}@, const list<T,Alloc@\removedConcepts{ator}@>& @\farg{y}@);
 
   // specialized algorithms:
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(list<T,Alloc@\removedConcepts{ator}@>& x, list<T,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(list<T,Alloc@\removedConcepts{ator}@>&& x, list<T,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(list<T,Alloc@\removedConcepts{ator}@>& x, list<T,Alloc@\removedConcepts{ator}@>&& y);
 
   @\removedConcepts{template <class T, class Alloc>}@
@@ -3714,11 +3717,11 @@
 \rSec3[list.special]{\tcode{list}\ specialized algorithms}
 
 \begin{itemdecl}
-template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
   void swap(list<T,Alloc@\removedConcepts{ator}@>& x, list<T,Alloc@\removedConcepts{ator}@>& y);
-template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
   void swap(list<T,Alloc@\removedConcepts{ator}@>&& x, list<T,Alloc@\removedConcepts{ator}@>& y);
-template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
   void swap(list<T,Alloc@\removedConcepts{ator}@>& x, list<T,Alloc@\removedConcepts{ator}@>&& y);
 \end{itemdecl}
 
@@ -3761,7 +3764,7 @@
 
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ T, class Cont@\removedConcepts{ainer}@ = deque<T> >
+ template <@\changedConcepts{class}{ValueType}@ T, class Cont@\removedConcepts{ainer}@ = deque<T> >
   @\addedConcepts{requires FrontInsertionContainer<Cont> \&\& BackInsertionContainer<Cont>}@
         @\addedConcepts{\&\& SameType<T, Cont::value_type>}@
         @\addedConcepts{\&\& NothrowDestructible<Cont>}@
@@ -3824,11 +3827,11 @@
   template <class T, @\changedConcepts{class}{LessThanComparable}@ Cont@\removedConcepts{ainer}@>
     bool operator<=(const queue<T, Cont@\removedConcepts{ainer}@>& x, const queue<T, Cont@\removedConcepts{ainer}@>& y);
 
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
     void swap(queue<T, Cont@\removedConcepts{ainer}@>& x, queue<T, Cont@\removedConcepts{ainer}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
     void swap(queue<T, Cont@\removedConcepts{ainer}@>&& x, queue<T, Cont@\removedConcepts{ainer}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
     void swap(queue<T, Cont@\removedConcepts{ainer}@>& x, queue<T, Cont@\removedConcepts{ainer}@>&& y);
 
   @\addedConcepts{template <class T, class Cont, class Alloc>}@
@@ -3928,11 +3931,11 @@
 \rSec4[queue.special]{\tcode{queue} specialized algorithms}
 
 \begin{itemdecl}
-template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
+template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
   void swap(queue<T, Cont@\removedConcepts{ainer}@>& x, queue<T, Cont@\removedConcepts{ainer}@>& y);
-template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
+template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
   void swap(queue<T, Cont@\removedConcepts{ainer}@>&& x, queue<T, Cont@\removedConcepts{ainer}@>& y);
-template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
+template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
   void swap(queue<T, Cont@\removedConcepts{ainer}@>& x, queue<T, Cont@\removedConcepts{ainer}@>&& y);
 \end{itemdecl}
 
@@ -3968,7 +3971,7 @@
 
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{BackInsertionContainer}@ Cont@\removedConcepts{ainer}@ = vector<T>,
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{BackInsertionContainer}@ Cont@\removedConcepts{ainer}@ = vector<T>,
             @\changedConcepts{class}{StrictWeakOrder<auto, T>}@ Compare = less<typename Cont@\removedConcepts{ainer}@::value_type> >
   @\addedConcepts{requires SameType<Cont::value_type, T> \&\& RandomAccessIterator<Cont::iterator>}@
         @\addedConcepts{\&\& ShuffleIterator<Cont::iterator> \&\& CopyConstructible<Compare>}@
@@ -4027,11 +4030,11 @@
       void swap(priority_queue&&);
   };
                 // no equality is provided
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@, @\addedConcepts{Swappable}@ Compare>
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@, @\addedConcepts{Swappable}@ Compare>
     void swap(priority_queue<T, Cont@\removedConcepts{ainer}@, Compare>& x, priority_queue<T, Cont@\removedConcepts{ainer}@, Compare>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@, @\addedConcepts{Swappable}@ Compare>
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@, @\addedConcepts{Swappable}@ Compare>
     void swap(priority_queue<T, Cont@\removedConcepts{ainer}@, Compare>&& x, priority_queue<T, Cont@\removedConcepts{ainer}@, Compare>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@, @\addedConcepts{Swappable}@ Compare>
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@, @\addedConcepts{Swappable}@ Compare>
     void swap(priority_queue<T, Cont@\removedConcepts{ainer}@, Compare>& x, priority_queue<T, Cont@\removedConcepts{ainer}@, Compare>&& y);
 
   @\addedConcepts{template <class T, class Cont, class Compare, class Alloc>}@
@@ -4205,7 +4208,7 @@
 
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{BackInsertionContainer}@ Cont@\removedConcepts{ainer}@ = deque<T> >
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{BackInsertionContainer}@ Cont@\removedConcepts{ainer}@ = deque<T> >
   @\addedConcepts{requires SameType<Cont::value_type, T>}@
         @\addedConcepts{\&\& NothrowDestructible<Cont>}@
   class stack {
@@ -4261,11 +4264,11 @@
     bool operator>=(const stack<T, Cont@\removedConcepts{ainer}@>& x, const stack<T, Cont@\removedConcepts{ainer}@>& y);
   template <@\changedConcepts{class}{LessThanComparable}@ T, class Cont@\removedConcepts{ainer}@>
     bool operator<=(const stack<T, Cont@\removedConcepts{ainer}@>& x, const stack<T, Cont@\removedConcepts{ainer}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
     void swap(stack<T, Cont@\removedConcepts{ainer}@>& x, stack<T, Cont@\removedConcepts{ainer}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
     void swap(stack<T, Cont@\removedConcepts{ainer}@>&& x, stack<T, Cont@\removedConcepts{ainer}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
     void swap(stack<T, Cont@\removedConcepts{ainer}@>& x, stack<T, Cont@\removedConcepts{ainer}@>&& y);
 
   @\addedConcepts{template <class T, class Cont, class Alloc>}@
@@ -4365,11 +4368,11 @@
 \rSec4[stack.special]{\tcode{stack} specialized algorithms}
 
 \begin{itemdecl}
-template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
+template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
   void swap(stack<T, Cont@\removedConcepts{ainer}@>& x, stack<T, Cont@\removedConcepts{ainer}@>& y);
-template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
+template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
   void swap(stack<T, Cont@\removedConcepts{ainer}@>&& x, stack<T, Cont@\removedConcepts{ainer}@>& y);
-template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
+template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{Swappable}@ Cont@\removedConcepts{ainer}@>
   void swap(stack<T, Cont@\removedConcepts{ainer}@>& x, stack<T, Cont@\removedConcepts{ainer}@>&& y);
 \end{itemdecl}
 
@@ -4408,7 +4411,7 @@
 
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ T, @\changedConcepts{class}{RandomAccessAllocator}@ Alloc@\removedConcepts{ator}@ = allocator<T> >
+ template <@\changedConcepts{class}{ValueType}@ T, @\changedConcepts{class}{RandomAccessAllocator}@ Alloc@\removedConcepts{ator}@ = allocator<T> >
   @\addedConcepts{requires MoveConstructible<T>}@
   class vector {
   public:
@@ -4545,11 +4548,11 @@
     bool operator<=(const vector<T,Alloc@\removedConcepts{ator}@>& x, const vector<T,Alloc@\removedConcepts{ator}@>& y);
 
   // specialized algorithms:
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(vector<T,Alloc@\removedConcepts{ator}@>& x, vector<T,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(vector<T,Alloc@\removedConcepts{ator}@>&& x, vector<T,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
     void swap(vector<T,Alloc@\removedConcepts{ator}@>& x, vector<T,Alloc@\removedConcepts{ator}@>&& y);
 
   @\removedConcepts{template <class T, class Alloc>}@
@@ -4913,11 +4916,11 @@
 \rSec3[vector.special]{\tcode{vector}\ specialized algorithms}
 
 \begin{itemdecl}
-template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
   void swap(vector<T,Alloc@\removedConcepts{ator}@>& x, vector<T,Alloc@\removedConcepts{ator}@>& y);
-template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
   void swap(vector<T,Alloc@\removedConcepts{ator}@>&& x, vector<T,Alloc@\removedConcepts{ator}@>& y);
-template <@\changedConcepts{class}{ObjectType}@ T, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ T, class Alloc@\removedConcepts{ator}@>
   void swap(vector<T,Alloc@\removedConcepts{ator}@>& x, vector<T,Alloc@\removedConcepts{ator}@>&& y);
 \end{itemdecl}
 
@@ -5085,7 +5088,7 @@
 
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T,
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T,
             @\changedConcepts{class}{Predicate<auto, Key, Key>}@ Compare = less<Key>,
             @\changedConcepts{class}{Allocator}@ Alloc@\removedConcepts{ator}@ = allocator<pair<const Key, T> > >
     @\addedConcepts{requires NothrowDestructible<Key> \&\& NothrowDestructible<T> \&\& CopyConstructible<Compare>}@
@@ -5110,17 +5113,17 @@
   template <@\changedConcepts{class}{LessThanComparable}@ Key, @\changedConcepts{class}{LessThanComparable}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
     bool operator<=(const map<Key,T,Compare,Alloc@\removedConcepts{ator}@>& x,
                     const map<Key,T,Compare,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(map<Key,T,Compare,Alloc@\removedConcepts{ator}@>& x,
               map<Key,T,Compare,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(map<Key,T,Compare,Alloc@\removedConcepts{ator}@&& x,
               map<Key,T,Compare,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(map<Key,T,Compare,Alloc@\removedConcepts{ator}@& x,
               map<Key,T,Compare,Alloc@\removedConcepts{ator}@>&& y);
 
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T,
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T,
             @\changedConcepts{class}{Predicate<auto, Key, Key>}@ Compare = less<Key>,
             @\changedConcepts{class}{Allocator}@ Alloc@\removedConcepts{ator}@ = allocator<pair<const Key, T> > >
     @\addedConcepts{requires NothrowDestructible<Key> \&\& NothrowDestructible<T> \&\& CopyConstructible<Compare>}@
@@ -5145,13 +5148,13 @@
   template <@\changedConcepts{class}{LessThanComparable}@ Key, @\changedConcepts{class}{LessThanComparable}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
     bool operator<=(const multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>& x,
                     const multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>& x,
               multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@&& x,
               multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@& x,
               multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>&& y);
 }
@@ -5162,7 +5165,7 @@
 
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{Predicate<auto, Key, Key>}@ Compare = less<Key>,
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{Predicate<auto, Key, Key>}@ Compare = less<Key>,
             @\changedConcepts{class}{Allocator}@ Alloc@\removedConcepts{ator}@ = allocator<Key> >
     @\addedConcepts{requires NothrowDestructible<Key> \&\& CopyConstructible<Compare>}@
              @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Compare, const Compare\&>}@
@@ -5186,17 +5189,17 @@
   template <@\changedConcepts{class}{LessThanComparable}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
     bool operator<=(const set<Key,Compare,Alloc@\removedConcepts{ator}@>& x,
                     const set<Key,Compare,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(set<Key,Compare,Alloc@\removedConcepts{ator}@>& x,
               set<Key,Compare,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ Key, class T, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, class T, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(set<Key,T,Compare,Alloc@\removedConcepts{ator}@&& x,
               set<Key,T,Compare,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ Key, class T, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, class T, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(set<Key,T,Compare,Alloc@\removedConcepts{ator}@& x,
               set<Key,T,Compare,Alloc@\removedConcepts{ator}@>&& y);
 
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{Predicate<auto, Key, Key>}@ Compare = less<Key>,
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{Predicate<auto, Key, Key>}@ Compare = less<Key>,
             @\changedConcepts{class}{Allocator}@ Alloc@\removedConcepts{ator}@ = allocator<Key> >
     @\addedConcepts{requires NothrowDestructible<Key> \&\& CopyConstructible<Compare>}@
              @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Compare, const Compare\&>}@
@@ -5220,13 +5223,13 @@
   template <@\changedConcepts{class}{LessThanComparable}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
     bool operator<=(const multiset<Key,Compare,Alloc@\removedConcepts{ator}@>& x,
                     const multiset<Key,Compare,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(multiset<Key,Compare,Alloc@\removedConcepts{ator}@>& x,
               multiset<Key,Compare,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ Key, class T, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, class T, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(multiset<Key,T,Compare,Alloc@\removedConcepts{ator}@&& x,
               multiset<Key,T,Compare,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ Key, class T, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, class T, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(multiset<Key,T,Compare,Alloc@\removedConcepts{ator}@& x,
               multiset<Key,T,Compare,Alloc@\removedConcepts{ator}@>&& y);
 }
@@ -5276,7 +5279,7 @@
 
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T,
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T,
             @\changedConcepts{class}{Predicate<auto, Key, Key>}@ Compare = less<Key>,
             @\changedConcepts{class}{Allocator}@ Alloc@\removedConcepts{ator}@ = allocator<pair<const Key, T> > >
   @\addedConcepts{requires NothrowDestructible<Key> \&\& NothrowDestructible<T> \&\& CopyConstructible<Compare>}@
@@ -5445,13 +5448,13 @@
                     const map<Key,T,Compare,Alloc@\removedConcepts{ator}@>& y);
 
   // specialized algorithms:
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(map<Key,T,Compare,Alloc@\removedConcepts{ator}@>& x,
               map<Key,T,Compare,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(map<Key,T,Compare,Alloc@\removedConcepts{ator}@&& x,
               map<Key,T,Compare,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(map<Key,T,Compare,Alloc@\removedConcepts{ator}@& x,
               map<Key,T,Compare,Alloc@\removedConcepts{ator}@>&& y);
 
@@ -5675,13 +5678,13 @@
 \rSec3[map.special]{\tcode{map}\ specialized algorithms}
 
 \begin{itemdecl}
-template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
   void swap(map<Key,T,Compare,Alloc@\removedConcepts{ator}@>& x,
             map<Key,T,Compare,Alloc@\removedConcepts{ator}@>& y);
-template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
   void swap(map<Key,T,Compare,Alloc@\removedConcepts{ator}@>&& x,
             map<Key,T,Compare,Alloc@\removedConcepts{ator}@>& y);
-template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
   void swap(map<Key,T,Compare,Alloc@\removedConcepts{ator}@>& x,
             map<Key,T,Compare,Alloc@\removedConcepts{ator}@>&& y);
 \end{itemdecl}
@@ -5745,7 +5748,7 @@
 
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T,
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T,
             @\changedConcepts{class}{Predicate<auto, Key, Key>}@ Compare = less<Key>,
             @\changedConcepts{class}{Allocator}@ Alloc@\removedConcepts{ator}@ = allocator<pair<const Key, T> > >
     @\addedConcepts{requires NothrowDestructible<Key> \&\& NothrowDestructible<T> \&\& CopyConstructible<Compare>}@
@@ -5904,13 +5907,13 @@
                     const multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>& y);
 
   // specialized algorithms:
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>& x,
               multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@&& x,
               multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@& x,
               multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>&& y);
 
@@ -6046,13 +6049,13 @@
 \rSec3[multimap.special]{\tcode{multimap}\ specialized algorithms}
 
 \begin{itemdecl}
-template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
   void swap(multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>& x,
             multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>& y);
-template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
   void swap(multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>&& x,
             multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>& y);
-template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
   void swap(multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>& x,
             multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>&& y);
 \end{itemdecl}
@@ -6110,7 +6113,7 @@
 
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{Predicate<auto, Key, Key>}@ Compare = less<Key>,
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{Predicate<auto, Key, Key>}@ Compare = less<Key>,
             @\changedConcepts{class}{Allocator}@ Alloc@\removedConcepts{ator}@ = allocator<Key> >
   @\addedConcepts{requires NothrowDestructible<Key> \&\& CopyConstructible<Compare>}@
            @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Compare, const Compare\&>}@
@@ -6253,13 +6256,13 @@
                     const set<Key,Compare,Alloc@\removedConcepts{ator}@>& y);
 
   // specialized algorithms:
- template <@\changedConcepts{class}{ObjectType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(set<Key,Compare,Alloc@\removedConcepts{ator}@>& x,
               set<Key,Compare,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(set<Key,Compare,Alloc@\removedConcepts{ator}@&& x,
               set<Key,Compare,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(set<Key,Compare,Alloc@\removedConcepts{ator}@& x,
               set<Key,Compare,Alloc@\removedConcepts{ator}@>&& y);
 
@@ -6324,13 +6327,13 @@
 \rSec3[set.special]{\tcode{set}\ specialized algorithms}
 
 \begin{itemdecl}
-template <@\changedConcepts{class}{ObjectType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
   void swap(set<Key,Compare,Alloc@\removedConcepts{ator}@>& x,
             set<Key,Compare,Alloc@\removedConcepts{ator}@>& y);
-template <@\changedConcepts{class}{ObjectType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
   void swap(set<Key,Compare,Alloc@\removedConcepts{ator}@>&& x,
             set<Key,Compare,Alloc@\removedConcepts{ator}@>& y);
-template <@\changedConcepts{class}{ObjectType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
   void swap(set<Key,Compare,Alloc@\removedConcepts{ator}@>& x,
             set<Key,Compare,Alloc@\removedConcepts{ator}@>&& y);
 \end{itemdecl}
@@ -6389,7 +6392,7 @@
 
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{Predicate<auto, Key, Key>}@ Compare = less<Key>,
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{Predicate<auto, Key, Key>}@ Compare = less<Key>,
             @\changedConcepts{class}{Allocator}@ Alloc@\removedConcepts{ator}@ = allocator<Key> >
   @\addedConcepts{requires NothrowDestructible<Key> \&\& CopyConstructible<Compare>}@
            @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Compare, const Compare\&>}@
@@ -6531,13 +6534,13 @@
                     const multiset<Key,Compare,Alloc@\removedConcepts{ator}@>& y);
 
   // specialized algorithms:
- template <@\changedConcepts{class}{ObjectType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(multiset<Key,Compare,Alloc@\removedConcepts{ator}@>& x,
               multiset<Key,Compare,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(multiset<Key,Compare,Alloc@\removedConcepts{ator}@&& x,
               multiset<Key,Compare,Alloc@\removedConcepts{ator}@>& y);
- template <@\changedConcepts{class}{ObjectType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
+ template <@\changedConcepts{class}{ValueType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
     void swap(multiset<Key,Compare,Alloc@\removedConcepts{ator}@& x,
               multiset<Key,Compare,Alloc@\removedConcepts{ator}@>&& y);
 
@@ -6603,13 +6606,13 @@
 \rSec3[multiset.special]{\tcode{multiset}\ specialized algorithms}
 
 \begin{itemdecl}
-template <@\changedConcepts{class}{ObjectType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
   void swap(multiset<Key,Compare,Alloc@\removedConcepts{ator}@>& x,
             multiset<Key,Compare,Alloc@\removedConcepts{ator}@>& y);
-template <@\changedConcepts{class}{ObjectType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
   void swap(multiset<Key,Compare,Alloc@\removedConcepts{ator}@>&& x,
             multiset<Key,Compare,Alloc@\removedConcepts{ator}@>& y);
-template <@\changedConcepts{class}{ObjectType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
+template <@\changedConcepts{class}{ValueType}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
   void swap(multiset<Key,Compare,Alloc@\removedConcepts{ator}@>& x,
             multiset<Key,Compare,Alloc@\removedConcepts{ator}@>&& y);
 \end{itemdecl}
@@ -6634,8 +6637,8 @@
 \begin{codeblock}
 namespace std {
   // \ref{unord.map}, class template unordered_map:
- template <@\changedConcepts{class}{ObjectType}@ Key,
- @\changedConcepts{class}{ObjectType}@ T,
+ template <@\changedConcepts{class}{ValueType}@ Key,
+ @\changedConcepts{class}{ValueType}@ T,
             @\changedConcepts{class}{Callable<auto, const Key\&>}@ Hash = hash<Key>,
             @\changedConcepts{class}{Predicate<auto, Key, Key>}@ Pred = std::equal_to<Key>,
             @\changedConcepts{class}{RandomAccessAllocator}@ Alloc = std::allocator<std::pair<const Key, T> > >
@@ -6649,8 +6652,8 @@
     class unordered_map;
 
   // \ref{unord.multimap}, class template unordered_multimap:
- template <@\changedConcepts{class}{ObjectType}@ Key,
- @\changedConcepts{class}{ObjectType}@ T,
+ template <@\changedConcepts{class}{ValueType}@ Key,
+ @\changedConcepts{class}{ValueType}@ T,
             @\changedConcepts{class}{Callable<auto, const Key\&>}@ Hash = hash<Key>,
             @\changedConcepts{class}{Predicate<auto, Key, Key>}@ Pred = std::equal_to<Key>,
             @\changedConcepts{class}{RandomAccessAllocator}@ Alloc = std::allocator<std::pair<const Key, T> > >
@@ -6663,23 +6666,23 @@
           @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Hash, Hash\&\&>}@
     class unordered_multimap;
 
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Hash, class Pred, class Alloc>
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Hash, class Pred, class Alloc>
     void swap(unordered_map<Key, T, Hash, Pred, Alloc>& x,
               unordered_map<Key, T, Hash, Pred, Alloc>& y);
- @\addedConcepts{template <ObjectType Key, ObjectType T, class Hash, class Pred, class Alloc>}@
+ @\addedConcepts{template <ValueType Key, ValueType T, class Hash, class Pred, class Alloc>}@
     @\addedConcepts{void swap(unordered_map<Key, T, Hash, Pred, Alloc>\& x,}@
               @\addedConcepts{unordered_map<Key, T, Hash, Pred, Alloc>\&\& y);}@
- @\addedConcepts{template <ObjectType Key, ObjectType T, class Hash, class Pred, class Alloc>}@
+ @\addedConcepts{template <ValueType Key, ValueType T, class Hash, class Pred, class Alloc>}@
     @\addedConcepts{void swap(unordered_map<Key, T, Hash, Pred, Alloc>\&\& x,}@
               @\addedConcepts{unordered_map<Key, T, Hash, Pred, Alloc>\& y);}@
 
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Hash, class Pred, class Alloc>
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Hash, class Pred, class Alloc>
     void swap(unordered_multimap<Key, T, Hash, Pred, Alloc>& x,
               unordered_multimap<Key, T, Hash, Pred, Alloc>& y);
- @\addedConcepts{template <ObjectType Key, ObjectType T, class Hash, class Pred, class Alloc>}@
+ @\addedConcepts{template <ValueType Key, ValueType T, class Hash, class Pred, class Alloc>}@
     @\addedConcepts{void swap(unordered_multimap<Key, T, Hash, Pred, Alloc>\& x,}@
               @\addedConcepts{unordered_multimap<Key, T, Hash, Pred, Alloc>\&\& y);}@
- @\addedConcepts{template <ObjectType Key, ObjectType T, class Hash, class Pred, class Alloc>}@
+ @\addedConcepts{template <ValueType Key, ValueType T, class Hash, class Pred, class Alloc>}@
     @\addedConcepts{void swap(unordered_multimap<Key, T, Hash, Pred, Alloc>\&\& x,}@
               @\addedConcepts{unordered_multimap<Key, T, Hash, Pred, Alloc>\& y);}@
 } // namespace std
@@ -6692,7 +6695,7 @@
 \begin{codeblock}
 namespace std {
   // \ref{unord.set}, class template unordered_set:
- template <@\changedConcepts{class}{ObjectType}@ Value,
+ template <@\changedConcepts{class}{ValueType}@ Value,
             @\changedConcepts{class}{Callable<auto, const Value\&>}@ Hash = hash<Value>,
             @\changedConcepts{class}{Predicate<auto, Value, Value>}@ class Pred = std::equal_to<Value>,
             @\changedConcepts{class}{RandomAccessAllocator}@ Alloc = std::allocator<Value> >
@@ -6706,7 +6709,7 @@
     class unordered_set;
 
   // \ref{unord.multiset}, class template unordered_multiset:
- template <@\changedConcepts{class}{ObjectType}@ Value,
+ template <@\changedConcepts{class}{ValueType}@ Value,
             @\changedConcepts{class}{Callable<auto, const Value\&>}@ Hash = hash<Value>,
             @\changedConcepts{class}{Predicate<auto, Value, Value>}@ class Pred = std::equal_to<Value>,
             @\changedConcepts{class}{RandomAccessAllocator}@ Alloc = std::allocator<Value> >
@@ -6719,23 +6722,23 @@
           @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Hash, Hash\&\&>}@
     class unordered_multiset;
 
- template <@\changedConcepts{class}{ObjectType}@ Value, class Hash, class Pred, class Alloc>
+ template <@\changedConcepts{class}{ValueType}@ Value, class Hash, class Pred, class Alloc>
     void swap(unordered_set<Value, Hash, Pred, Alloc>& x,
               unordered_set<Value, Hash, Pred, Alloc>& y);
- @\addedConcepts{template <ObjectType Value, class Hash, class Pred, class Alloc>}@
+ @\addedConcepts{template <ValueType Value, class Hash, class Pred, class Alloc>}@
     @\addedConcepts{void swap(unordered_set<Value, Hash, Pred, Alloc>\& x,}@
               @\addedConcepts{unordered_set<Value, Hash, Pred, Alloc>\&\& y);}@
- @\addedConcepts{template <ObjectType Value, class Hash, class Pred, class Alloc>}@
+ @\addedConcepts{template <ValueType Value, class Hash, class Pred, class Alloc>}@
     @\addedConcepts{void swap(unordered_set<Value, Hash, Pred, Alloc>\&\& x,}@
               @\addedConcepts{unordered_set<Value, Hash, Pred, Alloc>\& y);}@
 
- template <@\changedConcepts{class}{ObjectType}@ Value, class Hash, class Pred, class Alloc>
+ template <@\changedConcepts{class}{ValueType}@ Value, class Hash, class Pred, class Alloc>
     void swap(unordered_multiset<Value, Hash, Pred, Alloc>& x,
               unordered_multiset<Value, Hash, Pred, Alloc>& y);
- @\addedConcepts{template <ObjectType Value, class Hash, class Pred, class Alloc>}@
+ @\addedConcepts{template <ValueType Value, class Hash, class Pred, class Alloc>}@
     @\addedConcepts{void swap(unordered_multiset<Value, Hash, Pred, Alloc>\& x,}@
               @\addedConcepts{unordered_multiset<Value, Hash, Pred, Alloc>\&\& y);}@
- @\addedConcepts{template <ObjectType Value, class Hash, class Pred, class Alloc>}@
+ @\addedConcepts{template <ValueType Value, class Hash, class Pred, class Alloc>}@
     @\addedConcepts{void swap(unordered_multiset<Value, Hash, Pred, Alloc>\&\& x,}@
               @\addedConcepts{unordered_multiset<Value, Hash, Pred, Alloc>\& y);}@
 } // namespace std
@@ -6764,8 +6767,8 @@
 \index{unordered_map@\tcode{unordered_map}}%
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ Key,
- @\changedConcepts{class}{ObjectType}@ T,
+ template <@\changedConcepts{class}{ValueType}@ Key,
+ @\changedConcepts{class}{ValueType}@ T,
             @\changedConcepts{class}{Callable<auto, const Key\&>}@ Hash = hash<Key>,
             @\changedConcepts{class}{Predicate<auto, Key, Key>}@ Pred = std::equal_to<Key>,
             @\changedConcepts{class}{RandomAccessAllocator}@ Alloc = std::allocator<std::pair<const Key, T> > >
@@ -6915,13 +6918,13 @@
     @\addedConcepts{requires MoveConstructible<value_type>}@ void rehash(size_type n);
   };
 
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Hash, class Pred, class Alloc>
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Hash, class Pred, class Alloc>
     void swap(unordered_map<Key, T, Hash, Pred, Alloc>& x,
               unordered_map<Key, T, Hash, Pred, Alloc>& y);
- @\addedConcepts{template <ObjectType Key, ObjectType T, class Hash, class Pred, class Alloc>}@
+ @\addedConcepts{template <ValueType Key, ValueType T, class Hash, class Pred, class Alloc>}@
     @\addedConcepts{void swap(unordered_map<Key, T, Hash, Pred, Alloc>\& x,}@
               @\addedConcepts{unordered_map<Key, T, Hash, Pred, Alloc>\&\& y);}@
- @\addedConcepts{template <ObjectType Key, ObjectType T, class Hash, class Pred, class Alloc>}@
+ @\addedConcepts{template <ValueType Key, ValueType T, class Hash, class Pred, class Alloc>}@
     @\addedConcepts{void swap(unordered_map<Key, T, Hash, Pred, Alloc>\&\& x,}@
               @\addedConcepts{unordered_map<Key, T, Hash, Pred, Alloc>\& y);}@
 
@@ -7027,13 +7030,13 @@
 \index{unordered_map@\tcode{unordered_map}!swap@\tcode{swap}}%
 \index{swap@\tcode{swap}!unordered_map@\tcode{unordered_map}}%
 \begin{itemdecl}
-template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Hash, class Pred, class Alloc>
+template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Hash, class Pred, class Alloc>
   void swap(unordered_map<Key, T, Hash, Pred, Alloc>& x,
             unordered_map<Key, T, Hash, Pred, Alloc>& y);
-@\addedConcepts{template <ObjectType Key, ObjectType T, class Hash, class Pred, class Alloc>}@
+@\addedConcepts{template <ValueType Key, ValueType T, class Hash, class Pred, class Alloc>}@
   @\addedConcepts{void swap(unordered_map<Key, T, Hash, Pred, Alloc>\& x,}@
             @\addedConcepts{unordered_map<Key, T, Hash, Pred, Alloc>\&\& y);}@
-@\addedConcepts{template <ObjectType Key, ObjectType T, class Hash, class Pred, class Alloc>}@
+@\addedConcepts{template <ValueType Key, ValueType T, class Hash, class Pred, class Alloc>}@
   @\addedConcepts{void swap(unordered_map<Key, T, Hash, Pred, Alloc>\&\& x,}@
             @\addedConcepts{unordered_map<Key, T, Hash, Pred, Alloc>\& y);}@
 \end{itemdecl}
@@ -7065,8 +7068,8 @@
 \index{unordered_multimap@\tcode{unordered_multimap}}%
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ Key,
- @\changedConcepts{class}{ObjectType}@ T,
+ template <@\changedConcepts{class}{ValueType}@ Key,
+ @\changedConcepts{class}{ValueType}@ T,
             @\changedConcepts{class}{Callable<auto, const Key\&>}@ Hash = hash<Key>,
             @\changedConcepts{class}{Predicate<auto, Key, Key>}@ Pred = std::equal_to<Key>,
             @\changedConcepts{class}{RandomAccessAllocator}@ Alloc = std::allocator<std::pair<const Key, T> > >
@@ -7208,13 +7211,13 @@
     @\addedConcepts{requires MoveConstructible<value_type>}@ void rehash(size_type n);
   };
 
- template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Hash, class Pred, class Alloc>
+ template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Hash, class Pred, class Alloc>
     void swap(unordered_multimap<Key, T, Hash, Pred, Alloc>& x,
               unordered_multimap<Key, T, Hash, Pred, Alloc>& y);
- @\addedConcepts{template <ObjectType Key, ObjectType T, class Hash, class Pred, class Alloc>}@
+ @\addedConcepts{template <ValueType Key, ValueType T, class Hash, class Pred, class Alloc>}@
     @\addedConcepts{void swap(unordered_multimap<Key, T, Hash, Pred, Alloc>\& x,}@
               @\addedConcepts{unordered_multimap<Key, T, Hash, Pred, Alloc>\&\& y);}@
- @\addedConcepts{template <ObjectType Key, ObjectType T, class Hash, class Pred, class Alloc>}@
+ @\addedConcepts{template <ValueType Key, ValueType T, class Hash, class Pred, class Alloc>}@
     @\addedConcepts{void swap(unordered_multimap<Key, T, Hash, Pred, Alloc>\&\& x,}@
               @\addedConcepts{unordered_multimap<Key, T, Hash, Pred, Alloc>\& y);}@
 
@@ -7277,13 +7280,13 @@
 \index{unordered_multimap@\tcode{unordered_multimap}!swap@\tcode{swap}}%
 \index{swap@\tcode{swap}!unordered_multimap@\tcode{unordered_multimap}}%
 \begin{itemdecl}
-template <@\changedConcepts{class}{ObjectType}@ Key, @\changedConcepts{class}{ObjectType}@ T, class Hash, class Pred, class Alloc>
+template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Hash, class Pred, class Alloc>
   void swap(unordered_multimap<Key, T, Hash, Pred, Alloc>& x,
             unordered_multimap<Key, T, Hash, Pred, Alloc>& y);
-@\addedConcepts{template <ObjectType Key, ObjectType T, class Hash, class Pred, class Alloc>}@
+@\addedConcepts{template <ValueType Key, ValueType T, class Hash, class Pred, class Alloc>}@
   @\addedConcepts{void swap(unordered_multimap<Key, T, Hash, Pred, Alloc>\& x,}@
             @\addedConcepts{unordered_multimap<Key, T, Hash, Pred, Alloc>\&\& y);}@
-@\addedConcepts{template <ObjectType Key, ObjectType T, class Hash, class Pred, class Alloc>}@
+@\addedConcepts{template <ValueType Key, ValueType T, class Hash, class Pred, class Alloc>}@
   @\addedConcepts{void swap(unordered_multimap<Key, T, Hash, Pred, Alloc>\&\& x,}@
             @\addedConcepts{unordered_multimap<Key, T, Hash, Pred, Alloc>\& y);}@
 \end{itemdecl}
@@ -7316,7 +7319,7 @@
 \index{allocator}
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ Value,
+ template <@\changedConcepts{class}{ValueType}@ Value,
             @\changedConcepts{class}{Callable<auto, const Value\&>}@ Hash = hash<Value>,
             @\changedConcepts{class}{Predicate<auto, Value, Value>}@ class Pred = std::equal_to<Value>,
             @\changedConcepts{class}{RandomAccessAllocator}@ Alloc = std::allocator<Value> >
@@ -7455,13 +7458,13 @@
     @\addedConcepts{requires MoveConstructible<value_type>}@ void rehash(size_type n);
   };
 
- template <@\changedConcepts{class}{ObjectType}@ Value, class Hash, class Pred, class Alloc>
+ template <@\changedConcepts{class}{ValueType}@ Value, class Hash, class Pred, class Alloc>
     void swap(unordered_set<Value, Hash, Pred, Alloc>& x,
               unordered_set<Value, Hash, Pred, Alloc>& y);
- @\addedConcepts{template <ObjectType Value, class Hash, class Pred, class Alloc>}@
+ @\addedConcepts{template <ValueType Value, class Hash, class Pred, class Alloc>}@
     @\addedConcepts{void swap(unordered_set<Value, Hash, Pred, Alloc>\& x,}@
               @\addedConcepts{unordered_set<Value, Hash, Pred, Alloc>\&\& y);}@
- @\addedConcepts{template <ObjectType Value, class Hash, class Pred, class Alloc>}@
+ @\addedConcepts{template <ValueType Value, class Hash, class Pred, class Alloc>}@
     @\addedConcepts{void swap(unordered_set<Value, Hash, Pred, Alloc>\&\& x,}@
               @\addedConcepts{unordered_set<Value, Hash, Pred, Alloc>\& y);}@
 
@@ -7524,13 +7527,13 @@
 \index{unordered_set@\tcode{unordered_set}!swap@\tcode{swap}}%
 \index{swap@\tcode{swap}!unordered_set@\tcode{unordered_set}}%
 \begin{itemdecl}
-template <@\changedConcepts{class}{ObjectType}@ Value, class Hash, class Pred, class Alloc>
+template <@\changedConcepts{class}{ValueType}@ Value, class Hash, class Pred, class Alloc>
   void swap(unordered_set<Value, Hash, Pred, Alloc>& x,
             unordered_set<Value, Hash, Pred, Alloc>& y);
-@\addedConcepts{template <ObjectType Value, class Hash, class Pred, class Alloc>}@
+@\addedConcepts{template <ValueType Value, class Hash, class Pred, class Alloc>}@
   @\addedConcepts{void swap(unordered_set<Value, Hash, Pred, Alloc>\& x,}@
             @\addedConcepts{unordered_set<Value, Hash, Pred, Alloc>\&\& y);}@
-@\addedConcepts{template <ObjectType Value, class Hash, class Pred, class Alloc>}@
+@\addedConcepts{template <ValueType Value, class Hash, class Pred, class Alloc>}@
   @\addedConcepts{void swap(unordered_set<Value, Hash, Pred, Alloc>\&\& x,}@
             @\addedConcepts{unordered_set<Value, Hash, Pred, Alloc>\& y);}@
 \end{itemdecl}
@@ -7562,7 +7565,7 @@
 \index{unordered_multiset@\tcode{unordered_multiset}}%
 \begin{codeblock}
 namespace std {
- template <@\changedConcepts{class}{ObjectType}@ Value,
+ template <@\changedConcepts{class}{ValueType}@ Value,
             @\changedConcepts{class}{Callable<auto, const Value\&>}@ Hash = hash<Value>,
             @\changedConcepts{class}{Predicate<auto, Value, Value>}@ class Pred = std::equal_to<Value>,
             @\changedConcepts{class}{RandomAccessAllocator}@ Alloc = std::allocator<Value> >
@@ -7701,13 +7704,13 @@
     @\addedConcepts{requires MoveConstructible<value_type>}@ void rehash(size_type n);
   };
 
- template <@\changedConcepts{class}{ObjectType}@ Value, class Hash, class Pred, class Alloc>
+ template <@\changedConcepts{class}{ValueType}@ Value, class Hash, class Pred, class Alloc>
     void swap(unordered_multiset<Value, Hash, Pred, Alloc>& x,
               unordered_multiset<Value, Hash, Pred, Alloc>& y);
- @\addedConcepts{template <ObjectType Value, class Hash, class Pred, class Alloc>}@
+ @\addedConcepts{template <ValueType Value, class Hash, class Pred, class Alloc>}@
     @\addedConcepts{void swap(unordered_multiset<Value, Hash, Pred, Alloc>\& x,}@
               @\addedConcepts{unordered_multiset<Value, Hash, Pred, Alloc>\&\& y);}@
- @\addedConcepts{template <ObjectType Value, class Hash, class Pred, class Alloc>}@
+ @\addedConcepts{template <ValueType Value, class Hash, class Pred, class Alloc>}@
     @\addedConcepts{void swap(unordered_multiset<Value, Hash, Pred, Alloc>\&\& x,}@
               @\addedConcepts{unordered_multiset<Value, Hash, Pred, Alloc>\& y);}@
 
@@ -7769,13 +7772,13 @@
 \index{unordered_multiset@\tcode{unordered_multiset}!swap@\tcode{swap}}%
 \index{swap@\tcode{swap}!unordered_multiset@\tcode{unordered_multiset}}%
 \begin{itemdecl}
-template <@\changedConcepts{class}{ObjectType}@ Value, class Hash, class Pred, class Alloc>
+template <@\changedConcepts{class}{ValueType}@ Value, class Hash, class Pred, class Alloc>
   void swap(unordered_multiset<Value, Hash, Pred, Alloc>& x,
             unordered_multiset<Value, Hash, Pred, Alloc>& y);
-@\addedConcepts{template <ObjectType Value, class Hash, class Pred, class Alloc>}@
+@\addedConcepts{template <ValueType Value, class Hash, class Pred, class Alloc>}@
   @\addedConcepts{void swap(unordered_multiset<Value, Hash, Pred, Alloc>\& x,}@
             @\addedConcepts{unordered_multiset<Value, Hash, Pred, Alloc>\&\& y);}@
-@\addedConcepts{template <ObjectType Value, class Hash, class Pred, class Alloc>}@
+@\addedConcepts{template <ValueType Value, class Hash, class Pred, class Alloc>}@
   @\addedConcepts{void swap(unordered_multiset<Value, Hash, Pred, Alloc>\&\& x,}@
             @\addedConcepts{unordered_multiset<Value, Hash, Pred, Alloc>\& y);}@
 \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