Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r48882 - sandbox/committee/concepts/stdlib
From: dgregor_at_[hidden]
Date: 2008-09-19 05:09:56


Author: dgregor
Date: 2008-09-19 05:09:55 EDT (Fri, 19 Sep 2008)
New Revision: 48882
URL: http://svn.boost.org/trac/boost/changeset/48882

Log:
Big rename
Text files modified:
   sandbox/committee/concepts/stdlib/clib-containers.tex | 791 +++++++++++++++++++--------------------
   1 files changed, 376 insertions(+), 415 deletions(-)

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-19 05:09:55 EDT (Fri, 19 Sep 2008)
@@ -124,6 +124,7 @@
   \tcode{X::iterator} and \tcode{X::const_iterator} types must meet
   the requirements of the \tcode{ForwardIterator} concept, rather than
   the \tcode{InputIterator} concept.
+\item Renamed uses of \tcode{ConstructibleAsElement} to \tcode{AllocatableElement}.
 \end{itemize}
 
 \end{titlepage}
@@ -478,46 +479,6 @@
  linear \\
 \end{libreqtab5}
 
-Notes: the algorithms
-\tcode{swap()},
-\tcode{equal()}\
-and
-\tcode{lexicographical_compare()}\
-are defined in clause~\ref{algorithms}.
-Those entries marked ``(Note A)'' should have constant complexity.
-Those entries marked ``(Note B)'' have constant complexity unless
-\changedConcepts{\mbox{\tcode{allocator_propagate_never<X::allocator_type>::value}}
- is \mbox{\tcode{true}}}{\\\mbox{\tcode{AllocatorPropagateNever<X::allocator_type>}} is satisfied}, in which case they have linear complexity. Those
- entries marked ``(Note C)'' have constant complexity if
- \tcode{a.get_allocator() == rv.get_allocator()} or if either
- \changedConcepts{\mbox{\tcode{allocator_propagate_on_move_assignment<X::allocator_type>::value}}
- is \mbox{\tcode{true}}}{\\\mbox{\tcode{AllocatorPropagateOnMoveAssignment<X::allocator>}} is satisfied} or \changedConcepts{\\\mbox{\tcode{allocator_propagate_on_copy_assignment<X::allocator_type>::value}} is
- \mbox{\tcode{true}}}{\mbox{\\\tcode{AllocatorPropagateOnCopyAssignment<X::allocator>}} is satisfied} and linear complexity otherwise.
-
-\setcounter{Paras}{8}
-\pnum
-Copy and move constructors for all container types defined in this
-clause obtain an allocator by calling\\
-\changedConcepts{\mbox{\tcode{allocator_propogation_map}}}{\mbox{\tcode{AllocatorPropagation}}}\tcode{<allocator_type>::select_for_copy_construction()}
-on their respective first parameters. All other constructors for these
-container types take an \tcode{Allocator\&}\ argument
-(\ref{allocator.requirements}), an allocator whose value type is the
-same as the container's value type. A copy of this argument is used
-for any memory allocation performed, by these constructors and by all
-member functions, during the lifetime of each container object or
-until the allocator is replaced. The allocator may be replaced only
-via assignment or \tcode{swap()}. Allocator replacement is performed
-by calling
-\changedConcepts{\mbox{\tcode{allocator_propogation_map}}}{\mbox{\tcode{AllocatorPropagation}}}
-\tcode{<allocator_type>::move_assign()},
-\changedConcepts{\mbox{\tcode{allocator_propogation_map}}}{\mbox{\tcode{AllocatorPropagation}}}\tcode{<allocator_type>
-::copy_assign()}, or
-\changedConcepts{\mbox{\tcode{allocator_propogation_map}}}{\mbox{\tcode{AllocatorPropagation}}}\tcode{<allocator_type>::swap()}
-within the implementation of the corresponding container operation. In
-all container types defined in this clause, the member
-\tcode{get_allocator()} returns a copy of the \tcode{Allocator} object
-used to construct the container, or to replace the allocator.
-
 \setcounter{Paras}{10}
 \pnum
 If the iterator type of a container \changedConcepts{belongs to the
@@ -2349,33 +2310,33 @@
 
     // \ref{deque.cons} construct/copy/destroy:
     explicit deque(const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T>}@ explicit deque(size_type n);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T>}@ explicit deque(size_type n);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
       deque(size_type n, const T& value, const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference>}@
       deque(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last, const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ deque(const deque<T,Alloc@\removedConcepts{ator}@>& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@ deque(deque&&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ deque(const deque&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@ deque(deque&&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ deque(const deque<T,Alloc@\removedConcepts{ator}@>& x);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@ deque(deque&&);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ deque(const deque&, const Alloc@\removedConcepts{ator}@&);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@ deque(deque&&, const Alloc@\removedConcepts{ator}@&);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
       deque(initializer_list<T>, const Allocator& = Allocator());
 
    ~deque();
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>} \addedConcepts{\&\& CopyAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>} \addedConcepts{\&\& CopyAssignable<T>}@
       deque<T,Alloc@\removedConcepts{ator}@>& operator=(const deque<T,Alloc@\removedConcepts{ator}@>& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&> \&\& MoveAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&> \&\& MoveAssignable<T>}@
       deque<T,Alloc@\removedConcepts{ator}@>& operator=(@\removedConcepts{const}@ deque<T,Alloc@\removedConcepts{ator}@>&& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&> \&\& CopyAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&> \&\& CopyAssignable<T>}@
       deque& operator=(initializer_list<T>);
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference>}@
             @\addedConcepts{\&\& HasAssign<T, Iter::reference>}@
       void assign(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>} \addedConcepts{\&\& CopyAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>} \addedConcepts{\&\& CopyAssignable<T>}@
       void assign(size_type n, const T& t);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>} \addedConcepts{\&\& CopyAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>} \addedConcepts{\&\& CopyAssignable<T>}@
       void assign(initializer_list<T>);
     allocator_type get_allocator() const;
 
@@ -2397,9 +2358,9 @@
     // \ref{deque.capacity} capacity:
     size_type size() const;
     size_type max_size() const;
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T>}@
       void resize(size_type sz);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
       void resize(size_type sz, const T& c);
     bool empty() const;
 
@@ -2415,31 +2376,31 @@
 
     // \ref{deque.modifiers} modifiers:
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Args\&\&...>}@
       void emplace_front(Args&&... args);
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Args\&\&...>}@
       void emplace_back(Args&&... args);
 
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ void push_front(const T& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@ void push_front(T&& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ void push_back(const T& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@ void push_back(T&& x);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ void push_front(const T& x);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@ void push_front(T&& x);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ void push_back(const T& x);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@ void push_back(T&& x);
 
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Args\&\&...> \&\& MoveAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Args\&\&...> \&\& MoveAssignable<T>}@
       iterator emplace(const_iterator position, Args&&... args);
 
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&> \&\& MoveAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&> \&\& MoveAssignable<T>}@
       iterator insert(const_iterator position, const T& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&> \&\& MoveAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&> \&\& MoveAssignable<T>}@
       iterator insert(const_iterator position, T&& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&> \&\& MoveAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&> \&\& MoveAssignable<T>}@
       void insert(const_iterator position, size_type n, const T& x);
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference> \&\& MoveAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference> \&\& MoveAssignable<T>}@
       void insert(const_iterator position, @\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&> \&\& MoveAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&> \&\& MoveAssignable<T>}@
       void insert(const_iterator position, initializer_list<T>);
 
     void pop_front();
@@ -2497,7 +2458,7 @@
 \end{itemdescr}
 
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T>}@ explicit deque(size_type n);
+@\addedConcepts{requires AllocatableElement<Alloc, T>}@ explicit deque(size_type n);
 \end{itemdecl}
 
 \begin{itemdescr}
@@ -2513,7 +2474,7 @@
 \end{itemdescr}
 
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
 deque(size_type @\farg{n}@, const T& @\farg{value}@,
       const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
 \end{itemdecl}
@@ -2536,7 +2497,7 @@
 
 \begin{itemdecl}
 template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference>}@
   deque(@\changedConcepts{InputIterator}{Iter}@ @\farg{first}@, @\changedConcepts{InputIterator}{Iter}@ @\farg{last}@,
         const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
 \end{itemdecl}
@@ -2558,7 +2519,7 @@
 \index{assign@\tcode{assign}!\tcode{deque}}%
 \begin{itemdecl}
 template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference>}@
         @\addedConcepts{\&\& HasAssign<T, Iter::reference>}@
   void assign(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
 \end{itemdecl}
@@ -2573,7 +2534,7 @@
 \end{itemdescr}
 
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>} \addedConcepts{\&\& CopyAssignable<T>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>} \addedConcepts{\&\& CopyAssignable<T>}@
 void assign(size_type n, const T& t);
 \end{itemdecl}
 
@@ -2590,7 +2551,7 @@
 
 \index{resize@\tcode{resize}!\tcode{deque}}%
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T>}@
   void resize(size_type sz);
 \end{itemdecl}
 
@@ -2608,7 +2569,7 @@
 
 \index{resize@\tcode{resize}!\tcode{deque}}%
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
   void resize(size_type sz, const T& c);
 \end{itemdecl}
 
@@ -2638,30 +2599,30 @@
 \index{insert@\tcode{push_back}!\tcode{deque}}%
 \index{insert@\tcode{emplace}!\tcode{deque}}%
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&> \&\& MoveAssignable<T>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&> \&\& MoveAssignable<T>}@
   iterator insert(const_iterator position, const T& x);
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&> \&\& MoveAssignable<T>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&> \&\& MoveAssignable<T>}@
   iterator insert(const_iterator position, T&& x);
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&> \&\& MoveAssignable<T>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&> \&\& MoveAssignable<T>}@
   void insert(const_iterator position, size_type n, const T& x);
 template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference> \&\& MoveAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference> \&\& MoveAssignable<T>}@
   void insert(const_iterator position,
               @\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
 
 template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Args\&\&...>}@
   void emplace_front(Args&&... args);
 template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Args\&\&...>}@
   void emplace_back(Args&&... args);
 template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Args\&\&...> \&\& MoveAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Args\&\&...> \&\& MoveAssignable<T>}@
   iterator emplace(const_iterator position, Args&&... args);
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ void push_front(const T& x);
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@ void push_front(T&& x);
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ void push_back(const T& x);
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@ void push_back(T&& x);
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ void push_front(const T& x);
+@\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@ void push_front(T&& x);
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ void push_back(const T& x);
+@\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@ void push_back(T&& x);
 \end{itemdecl}
 
 \begin{itemdescr}
@@ -2763,34 +2724,34 @@
 
     // \ref{forwardlist.cons} construct/copy/destroy:
     explicit forward_list(const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T>}@
       explicit forward_list(size_type n);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
       forward_list(size_type n, const T& value,
                    const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{AllocatableElement<Alloc, T, Iter::reference>}@
       forward_list(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last,
                    const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
       forward_list(const forward_list<T,Alloc@\removedConcepts{ator}@>& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@ forward_list(forward_list<T,Alloc@\removedConcepts{ator}@>&& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@ forward_list(forward_list<T,Alloc@\removedConcepts{ator}@>&& x);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
       forward_list(initializer_list<T>, const Allocator& = Allocator());
     ~forward_list();
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ @\addedConcepts{\&\& CopyAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ @\addedConcepts{\&\& CopyAssignable<T>}@
       forward_list<T,Alloc@\removedConcepts{ator}@>& operator=(const forward_list<T,Alloc@\removedConcepts{ator}@>& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&> \&\& MoveAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&> \&\& MoveAssignable<T>}@
       forward_list<T,Alloc@\removedConcepts{ator}@>& operator=(forward_list<T,Alloc@\removedConcepts{ator}@>&& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&> \&\& CopyAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&> \&\& CopyAssignable<T>}@
       forward_list<T,Alloc@\removedConcepts{ator}@> operator=(initializer_list<T>);
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference>}@
             @\addedConcepts{\&\& HasAssign<T, Iter::reference>}@
       void assign(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ @\addedConcepts{\&\& CopyAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ @\addedConcepts{\&\& CopyAssignable<T>}@
       void assign(size_type n, const T& t);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ @\addedConcepts{\&\& CopyAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ @\addedConcepts{\&\& CopyAssignable<T>}@
       void assign(initializer_list<T>);
     allocator_type get_allocator() const;
 
@@ -2816,34 +2777,34 @@
 
     // \ref{forwardlist.modifiers} modifiers:
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Args\&\&...>}@
       void emplace_front(Args&&... args);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ void push_front(const T& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@ void push_front(T&& x);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ void push_front(const T& x);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@ void push_front(T&& x);
     void pop_front();
    
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Args\&\&...>}@
       iterator emplace_after(const_iterator position, Args&&... args);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
       iterator insert_after(const_iterator position, const T& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@
       iterator insert_after(const_iterator position, T&& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
       void insert_after(const_iterator position, initializer_list<T> il);
 
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
       void insert_after(const_iterator position, size_type n, const T& x);
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference>}@
       void insert_after(const_iterator position, @\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
 
     iterator erase_after(const_iterator position);
     iterator erase_after(const_iterator position, iterator last);
     void swap(forward_list<T,Alloc@\removedConcepts{ator}@>&&);
 
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T>}@ void resize(size_type sz);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ void resize(size_type sz, value_type c);
+ @\addedConcepts{requires AllocatableElement<Alloc, T>}@ void resize(size_type sz);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ void resize(size_type sz, value_type c);
     void clear();
 
     // \ref{forwardlist.ops} forward_list operations:
@@ -2909,7 +2870,7 @@
 \end{itemdescr}
 
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T>}@
   explicit forward_list(size_type n);
 \end{itemdecl}
 
@@ -2925,7 +2886,7 @@
 \end{itemdescr}
 
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
   forward_list(size_type n, const T& value, const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
 \end{itemdecl}
 
@@ -2942,7 +2903,7 @@
 
 \begin{itemdecl}
 template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{AllocatableElement<Alloc, T, Iter::reference>}@
   forward_list(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last,
                const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
 \end{itemdecl}
@@ -2957,7 +2918,7 @@
 
 \begin{itemdecl}
 template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference>}@
         @\addedConcepts{\&\& HasAssign<T, Iter::reference>}@
   void assign(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
 \end{itemdecl}
@@ -2968,7 +2929,7 @@
 \end{itemdescr}
 
 \begin{itemdecl}
-@\addedConcepts{ConstructibleAsElement<Alloc, T, const T\&>} \addedConcepts{\&\& CopyAssignable<T>}@
+@\addedConcepts{AllocatableElement<Alloc, T, const T\&>} \addedConcepts{\&\& CopyAssignable<T>}@
   void assign(size_type n, const T& t);
 \end{itemdecl}
 
@@ -3010,7 +2971,7 @@
 
 \begin{itemdecl}
 template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Args\&\&...>}@
   void emplace_front(Args&&... args);
 \end{itemdecl}
 
@@ -3020,8 +2981,8 @@
 \end{itemdescr}
 
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ void push_front(const T& x);
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@ void push_front(T&& x);
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ void push_front(const T& x);
+@\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@ void push_front(T&& x);
 \end{itemdecl}
 
 \begin{itemdescr}
@@ -3039,9 +3000,9 @@
 \end{itemdescr}
 
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
   iterator insert_after(const_iterator position, const T& x);
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@
   iterator insert_after(const_iterator position, T&& x);
 \end{itemdecl}
 
@@ -3057,7 +3018,7 @@
 \end{itemdescr}
 
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
   void insert_after(const_iterator position, size_type n, const T& x);
 \end{itemdecl}
 
@@ -3071,7 +3032,7 @@
 
 \begin{itemdecl}
 template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference>}@
   void insert_after(const_iterator position, @\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
 \end{itemdecl}
 
@@ -3084,7 +3045,7 @@
 \end{itemdescr}
 
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
   void insert_after(const_iterator position, initializer_list<T> il);
 \end{itemdecl}
 
@@ -3095,7 +3056,7 @@
 
 \begin{itemdecl}
 template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Args\&\&...>}@
   iterator emplace_after(const_iterator position, Args&&... args);
 \end{itemdecl}
 
@@ -3138,8 +3099,8 @@
 \end{itemdescr}
 
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T>}@ void resize(size_type sz);
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ void resize(size_type sz, value_type c);
+@\addedConcepts{requires AllocatableElement<Alloc, T>}@ void resize(size_type sz);
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ void resize(size_type sz, value_type c);
 \end{itemdecl}
 
 \begin{itemdescr}
@@ -3361,32 +3322,32 @@
 
     // \ref{list.cons} construct/copy/destroy:
     explicit list(const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T>}@ explicit list(size_type n);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T>}@ explicit list(size_type n);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
       list(size_type @\farg{n}@, const T& @\farg{value}@, const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference>}@
       list(@\changedConcepts{InputIterator}{Iter}@ @\farg{first}@, @\changedConcepts{InputIterator}{Iter}@ @\farg{last}@, const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ list(const list<T,Alloc@\removedConcepts{ator}@>& @\farg{x}@);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@ list(list&& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ list(const list&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@ list(list&&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ list(const list<T,Alloc@\removedConcepts{ator}@>& @\farg{x}@);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@ list(list&& x);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ list(const list&, const Alloc@\removedConcepts{ator}@&);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@ list(list&&, const Alloc@\removedConcepts{ator}@&);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
       list(initializer_list<T>, const Allocator& = Allocator());
    ~list();
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ @\addedConcepts{\&\& CopyAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ @\addedConcepts{\&\& CopyAssignable<T>}@
       list<T,Alloc@\removedConcepts{ator}@>& operator=(const list<T,Alloc@\removedConcepts{ator}@>& @\farg{x}@);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&> \&\& MoveAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&> \&\& MoveAssignable<T>}@
       list<T,Alloc@\removedConcepts{ator}@>& operator=(list<T,Alloc@\removedConcepts{ator}@>&& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&> \&\& CopyAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&> \&\& CopyAssignable<T>}@
       list<T,Alloc@\removedConcepts{ator}@>& operator=(initializer_list<T>);
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference>}@
             @\addedConcepts{\&\& HasAssign<T, Iter::reference>}@
       void assign(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ @\addedConcepts{\&\& CopyAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ @\addedConcepts{\&\& CopyAssignable<T>}@
       void assign(size_type n, const T& t);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&> \&\& CopyAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&> \&\& CopyAssignable<T>}@
       void assign(initializer_list<T>);
     allocator_type get_allocator() const;
 
@@ -3409,8 +3370,8 @@
     bool empty() const;
     size_type size() const;
     size_type max_size() const;
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T>}@ void resize(size_type sz);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ void resize(size_type sz, const T& c);
+ @\addedConcepts{requires AllocatableElement<Alloc, T>}@ void resize(size_type sz);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ void resize(size_type sz, const T& c);
 
     // element access:
     reference front();
@@ -3420,33 +3381,33 @@
 
     // \ref{list.modifiers} modifiers:
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Args\&\&...>}@
       void emplace_front(Args&&... args);
     void pop_front();
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Args\&\&...>}@
       void emplace_back(Args&&... args);
     void pop_back();
 
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ void push_front(const T& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@ void push_front(T&& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ void push_back(const T& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@ void push_back(T&& x);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ void push_front(const T& x);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@ void push_front(T&& x);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ void push_back(const T& x);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@ void push_back(T&& x);
 
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Args\&\&...>}@
       iterator emplace(const_iterator position, Args&&... args);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
       iterator insert(const_iterator @\farg{position}@, const T& @\farg{x}@);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@
       iterator insert(const_iterator position, T&& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
       void insert(const_iterator @\farg{position}@, size_type @\farg{n}@, const T& @\farg{x}@);
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference>}@
       void insert(const_iterator @\farg{position}@, @\changedConcepts{InputIterator}{Iter}@ @\farg{first}@,
                   @\changedConcepts{InputIterator}{Iter}@ @\farg{last}@);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
       void insert(const_iterator position, initializer_list<T> il);
 
     iterator erase(const_iterator @\farg{position}@);
@@ -3522,7 +3483,7 @@
 \end{itemdescr}
 
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T>}@ explicit list(size_type n);
+@\addedConcepts{requires AllocatableElement<Alloc, T>}@ explicit list(size_type n);
 \end{itemdecl}
 
 \begin{itemdescr}
@@ -3540,7 +3501,7 @@
 \end{itemdescr}
 
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
   list(size_type @\farg{n}@, const T& @\farg{value}@,
                 const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
 \end{itemdecl}
@@ -3567,7 +3528,7 @@
 
 \begin{itemdecl}
 template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference>}@
   list(@\changedConcepts{InputIterator}{Iter}@ @\farg{first}@, @\changedConcepts{InputIterator}{Iter}@ @\farg{last}@, const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
 \end{itemdecl}
 
@@ -3588,7 +3549,7 @@
 \index{assign@\tcode{assign}!\tcode{list}}%
 \begin{itemdecl}
 template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference>}@
         @\addedConcepts{\&\& HasAssign<T, Iter::reference>}@
   void assign(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
 \end{itemdecl}
@@ -3607,7 +3568,7 @@
 \end{itemdescr}
 
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>} \addedConcepts{\&\& CopyAssignable<T>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>} \addedConcepts{\&\& CopyAssignable<T>}@
   void assign(size_type n, const T& t);
 \end{itemdecl}
 
@@ -3621,7 +3582,7 @@
 
 \index{resize@\tcode{resize}!\tcode{list}}%
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T>}@ void resize(size_type sz);
+@\addedConcepts{requires AllocatableElement<Alloc, T>}@ void resize(size_type sz);
 \end{itemdecl}
 
 \begin{itemdescr}
@@ -3640,7 +3601,7 @@
 
 \index{resize@\tcode{resize}!\tcode{list}}%
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ void resize(size_type sz, const T& c);
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ void resize(size_type sz, const T& c);
 \end{itemdecl}
 
 \begin{itemdescr}
@@ -3666,30 +3627,30 @@
 
 \index{insert@\tcode{insert}!\tcode{list}}%
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
   iterator insert(const_iterator position, const T& x);
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@
   iterator insert(const_iterator position, T&& x);
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
   void insert(const_iterator @\farg{position}@, size_type @\farg{n}@, const T& @\farg{x}@);
 template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference>}@
   void insert(const_iterator @\farg{position}@, @\changedConcepts{InputIterator}{Iter}@ @\farg{first}@,
               @\changedConcepts{InputIterator}{Iter}@ @\farg{last}@);
 
 template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Args\&\&...>}@
   void emplace_front(Args&&... args);
 template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Args\&\&...>}@
   void emplace_back(Args&&... args);
 template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Args\&\&...>}@
   iterator emplace(const_iterator position, Args&&... args);
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ void push_front(const T& x);
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@ void push_front(T&& x);
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ void push_back(const T& x);
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@ void push_back(T&& x);
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ void push_front(const T& x);
+@\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@ void push_front(T&& x);
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ void push_back(const T& x);
+@\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@ void push_back(T&& x);
 \end{itemdecl}
 
 \begin{itemdescr}
@@ -4771,34 +4732,34 @@
 
     // \ref{vector.cons} construct/copy/destroy:
     explicit vector(const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T>}@
       explicit vector(size_type n);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
       vector(size_type n, const T& value, const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference>}@
       vector(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last,
              const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ vector(const vector<T,Alloc@\removedConcepts{ator}@>& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@ vector(vector&&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ vector(const vector&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@ vector(vector&&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ vector(const vector<T,Alloc@\removedConcepts{ator}@>& x);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@ vector(vector&&);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ vector(const vector&, const Alloc@\removedConcepts{ator}@&);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@ vector(vector&&, const Alloc@\removedConcepts{ator}@&);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
       vector(initializer_list<T>, const Allocator& = Allocator());
    ~vector();
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ @\addedConcepts{\&\& CopyAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ @\addedConcepts{\&\& CopyAssignable<T>}@
       vector<T,Alloc@\removedConcepts{ator}@>& operator=(const vector<T,Alloc@\removedConcepts{ator}@>& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&> \&\& MoveAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&> \&\& MoveAssignable<T>}@
       vector<T,Alloc@\removedConcepts{ator}@>& operator=(vector<T,Alloc@\removedConcepts{ator}@>&& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&> \&\& CopyAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&> \&\& CopyAssignable<T>}@
       vector<T,Alloc@\removedConcepts{ator}@>& operator=(initializer_list<T>);
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference>}@
             @\addedConcepts{\&\& HasAssign<T, Iter::reference>}@
       void assign(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&> \&\& CopyAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&> \&\& CopyAssignable<T>}@
       void assign(size_type n, const T& u);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&> \&\& CopyAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&> \&\& CopyAssignable<T>}@
       void assign(initializer_list<T>);
     allocator_type get_allocator() const;
 
@@ -4820,9 +4781,9 @@
     // \ref{vector.capacity} capacity:
     size_type size() const;
     size_type max_size() const;
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T>}@
       void resize(size_type sz);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
       void resize(size_type sz, const T& c);
     size_type capacity() const;
     bool empty() const;
@@ -4845,28 +4806,28 @@
 
     // \ref{vector.modifiers} modifiers:
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Args\&\&...>}@
       void emplace_back(Args&&... args);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ void push_back(const T& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@ void push_back(T&& x);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ void push_back(const T& x);
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@ void push_back(T&& x);
     void pop_back();
 
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Args\&\&...>}@
             @\addedConcepts{\&\& MoveAssignable<T>}@
       iterator emplace(const_iterator position, Args&&... args);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ @\addedConcepts{\&\& MoveAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ @\addedConcepts{\&\& MoveAssignable<T>}@
       iterator insert(const_iterator position, const T& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&> \&\& MoveAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&> \&\& MoveAssignable<T>}@
       void insert(const_iterator position, T&& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&> \&\& MoveAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&> \&\& MoveAssignable<T>}@
       void insert(const_iterator position, size_type n, const T& x);
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference>}@
               @\addedConcepts{\&\& MoveAssignable<T>}@
         void insert(const_iterator position,
                     @\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&> \&\& MoveAssignable<T>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, const T\&> \&\& MoveAssignable<T>}@
       void insert(const_iterator position, initializer_list<T> il);
     @\addedConcepts{requires MoveAssignable<T>}@ iterator erase(const_iterator position);
     @\addedConcepts{requires MoveAssignable<T>}@ iterator erase(const_iterator first, const_iterator last);
@@ -4921,7 +4882,7 @@
 
 \index{vector@\tcode{vector}!\tcode{vector}}
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T>}@ explicit vector(size_type n);
+@\addedConcepts{requires AllocatableElement<Alloc, T>}@ explicit vector(size_type n);
 \end{itemdecl}
 
 \begin{itemdescr}
@@ -4938,7 +4899,7 @@
 
 \index{vector@\tcode{vector}!\tcode{vector}}
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
 explicit vector(size_type n, const T& value,
                 const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
 \end{itemdecl}
@@ -4958,7 +4919,7 @@
 \index{vector@\tcode{vector}!\tcode{vector}}
 \begin{itemdecl}
 template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference>}@
   vector(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last,
          const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
 \end{itemdecl}
@@ -4992,7 +4953,7 @@
 \index{assign@\tcode{assign}!\tcode{vector}}%
 \begin{itemdecl}
 template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference>}@
         @\addedConcepts{\&\& HasAssign<T, Iter::reference>}@
   void assign(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
 \end{itemdecl}
@@ -5007,7 +4968,7 @@
 \end{itemdescr}
 
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ @\addedConcepts{\&\& CopyAssignable<T>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ @\addedConcepts{\&\& CopyAssignable<T>}@
   void assign(size_type n, const T& t);
 \end{itemdecl}
 
@@ -5120,7 +5081,7 @@
 
 \index{resize@\tcode{resize}!\tcode{vector}}%
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T>}@
   void resize(size_type sz);
 \end{itemdecl}
 
@@ -5138,7 +5099,7 @@
 
 \index{resize@\tcode{resize}!\tcode{vector}}%
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@
   void resize(size_type sz, const T& c);
 \end{itemdecl}
 
@@ -5185,27 +5146,27 @@
 
 \index{insert@\tcode{insert}!\tcode{vector}}%
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&> \&\& MoveAssignable<T>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&> \&\& MoveAssignable<T>}@
   iterator insert(const_iterator position, const T& x);
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&> \&\& MoveAssignable<T>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&> \&\& MoveAssignable<T>}@
   iterator insert(const_iterator position, T&& x);
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&> \&\& MoveAssignable<T>}@
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&> \&\& MoveAssignable<T>}@
   void insert(const_iterator position, size_type n, const T& x);
 template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Iter::reference>}@
           @\addedConcepts{\&\& MoveAssignable<T>}@
     void insert(const_iterator position,
                 @\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
 
 template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Args\&\&...>}@
   void emplace_back(Args&&... args);
 template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, T, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, T, Args\&\&...>}@
         @\addedConcepts{\&\& MoveAssignable<T>}@
   iterator emplace(const_iterator position, Args&&... args);
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, const T\&>}@ void push_back(const T& x);
-@\addedConcepts{requires ConstructibleAsElement<Alloc, T, T\&\&>}@ void push_back(T&& x);
+@\addedConcepts{requires AllocatableElement<Alloc, T, const T\&>}@ void push_back(const T& x);
+@\addedConcepts{requires AllocatableElement<Alloc, T, T\&\&>}@ void push_back(T&& x);
 \end{itemdecl}
 
 \begin{itemdescr}
@@ -5432,8 +5393,8 @@
             @\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>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Compare, const Compare\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Compare, Compare\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Compare, const Compare\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Compare, Compare\&\&>}@
     class map;
   template <@\changedConcepts{class}{EqualityComparable}@ Key, @\changedConcepts{class}{EqualityComparable}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
     bool operator==(const map<Key,T,Compare,Alloc@\removedConcepts{ator}@>& x,
@@ -5467,8 +5428,8 @@
             @\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>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Compare, const Compare\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Compare, Compare\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Compare, const Compare\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Compare, Compare\&\&>}@
     class multimap;
   template <@\changedConcepts{class}{EqualityComparable}@ Key, @\changedConcepts{class}{EqualityComparable}@ T, class Compare, class Alloc@\removedConcepts{ator}@>
     bool operator==(const multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>& x,
@@ -5508,8 +5469,8 @@
   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\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Compare, Compare\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Compare, const Compare\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Compare, Compare\&\&>}@
     class set;
   template <@\changedConcepts{class}{EqualityComparable}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
     bool operator==(const set<Key,Compare,Alloc@\removedConcepts{ator}@>& x,
@@ -5542,8 +5503,8 @@
   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\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Compare, Compare\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Compare, const Compare\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Compare, Compare\&\&>}@
     class multiset;
   template <@\changedConcepts{class}{EqualityComparable}@ Key, class Compare, class Alloc@\removedConcepts{ator}@>
     bool operator==(const multiset<Key,Compare,Alloc@\removedConcepts{ator}@>& x,
@@ -5623,8 +5584,8 @@
             @\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>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Compare, const Compare\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Compare, Compare\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Compare, const Compare\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Compare, Compare\&\&>}@
   class map {
   public:
     // types:
@@ -5660,29 +5621,29 @@
     explicit map(const Compare& comp = Compare(),
                  const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
             @\addedConcepts{\&\& MoveConstructible<value_type>}@
       map(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last,
           const Compare& comp = Compare(), const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       map(const map<Key,T,Compare,Alloc@\removedConcepts{ator}@>& x);
     map(map<Key,T,Compare,Alloc@\removedConcepts{ator}@>&& x);
     map(const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       map(const map&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&>}@
       map(map&&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       map(initializer_list<value_type>,
           const Compare& = Compare(),
           const Allocator& = Allocator());
    ~map();
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
           @\addedConcepts{\&\& CopyAssignable<value_type>}@
       map<Key,T,Compare,Alloc@\removedConcepts{ator}@>& operator=(const map<Key,T,Compare,Alloc@\removedConcepts{ator}@>& x);
     map<Key,T,Compare,Alloc@\removedConcepts{ator}@>&
       operator=(map<Key,T,Compare,Alloc@\removedConcepts{ator}@>&& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
           @\addedConcepts{\&\& CopyAssignable<value_type>}@
       map<Key,T,Compare,Alloc@\removedConcepts{ator}@>& operator=(initializer_list<value_type>);
     allocator_type get_allocator() const;
@@ -5709,37 +5670,37 @@
     size_type max_size() const;
 
     // \ref{map.access} element access:
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const key_type\&, mapped_type\&\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, mapped_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const key_type\&, mapped_type\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, mapped_type>}@
       T& operator[](const key_type& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, key_type\&\&, mapped_type\&\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, mapped_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, key_type\&\&, mapped_type\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, mapped_type>}@
       T& operator[](key_type&& x);
     T& at(const key_type& x);
     const T& at(const key_type& x) const;
 
     // modifiers:
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Args\&\&...>}@
       pair<iterator, bool> emplace(Args&&... args);
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Args\&\&...>}@
       iterator emplace_hint(const_iterator position, Args&&... args);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       pair<iterator, bool> insert(const value_type& x);
     template <class P>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
       pair<iterator, bool> insert(P&& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       iterator insert(const_iterator position, const value_type& x);
     template <class P>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
       iterator insert(const_iterator position, P&&);
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
             @\addedConcepts{\&\& MoveConstructible<value_type>}@
       void insert(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       void insert(initializer_list<value_type>);
 
     iterator erase(const_iterator position);
@@ -5829,7 +5790,7 @@
 
 \begin{itemdecl}
 template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
           @\addedConcepts{\&\& MoveConstructible<value_type>}@
   map(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last,
       const Compare& comp = Compare(), const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
@@ -5863,8 +5824,8 @@
 
 \index{operator[]@\tcode{operator[]}!map@\tcode{map}}%
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const key_type\&>, mapped_type\&\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, mapped_type>}@
+@\addedConcepts{requires AllocatableElement<Alloc, value_type, const key_type\&>, mapped_type\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, mapped_type>}@
   T& operator[](const key_type& x);
 \end{itemdecl}
 
@@ -5894,8 +5855,8 @@
 
 \index{operator[]@\tcode{operator[]}!map@\tcode{map}}%
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, key_type\&\&, mapped_type\&\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, mapped_type>}@
+@\addedConcepts{requires AllocatableElement<Alloc, value_type, key_type\&\&, mapped_type\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, mapped_type>}@
   T& operator[](key_type&& x);
 \end{itemdecl}
 
@@ -5947,10 +5908,10 @@
 
 \begin{itemdecl}
 template <class P>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
   pair<iterator, bool> insert(P&& x);
 template <class P>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
   pair<iterator, bool> insert(const_iterator position, P&& x);
 \end{itemdecl}
 
@@ -6092,8 +6053,8 @@
             @\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>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Compare, const Compare\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Compare, Compare\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Compare, const Compare\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Compare, Compare\&\&>}@
   class multimap {
   public:
     // types:
@@ -6129,29 +6090,29 @@
     explicit multimap(const Compare& comp = Compare(),
                       const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
             @\addedConcepts{\&\& MoveConstructible<value_type>}@
       multimap(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last,
           const Compare& comp = Compare(), const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       multimap(const multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>& x);
     multimap(multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>&& x);
     multimap(const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       multimap(const multimap&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&>}@
       multimap(multimap&&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       multimap(initializer_list<value_type>,
           const Compare& = Compare(),
           const Allocator& = Allocator());
    ~multimap();
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
             @\addedConcepts{\&\& CopyAssignable<value_type>}@
       multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>& operator=(const multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>& x);
     multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>&
       operator=(const multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>&& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
           @\addedConcepts{\&\& CopyAssignable<value_type>}@
       multimap<Key,T,Compare,Alloc@\removedConcepts{ator}@>& operator=(initializer_list<value_type>);
     allocator_type get_allocator() const;
@@ -6179,26 +6140,26 @@
 
     // modifiers:
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Args\&\&...>}@
       iterator emplace(Args&&... args);
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Args\&\&...>}@
       iterator emplace_hint(const_iterator position, Args&&... args);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       iterator insert(const value_type& x);
     template <class P>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
       iterator insert(P&& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       iterator insert(const_iterator position, const value_type& x);
     template <class P>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
       iterator insert(const_iterator position, P&& x);
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
             @\addedConcepts{\&\& MoveConstructible<value_type>}@
       void insert(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       void insert(initializer_list<value_type>);
 
     iterator erase(const_iterator position);
@@ -6287,7 +6248,7 @@
 
 \begin{itemdecl}
 template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
           @\addedConcepts{\&\& MoveConstructible<value_type>}@
   multimap(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last,
       const Compare& comp = Compare(), const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
@@ -6322,10 +6283,10 @@
 
 \begin{itemdecl}
 template <class P>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
   iterator insert(P&& x);
 template <class P>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
   iterator insert(const_iterator position, P&& x);
 \end{itemdecl}
 
@@ -6456,8 +6417,8 @@
   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\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Compare, Compare\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Compare, const Compare\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Compare, Compare\&\&>}@
   class set {
   public:
     // types:
@@ -6481,29 +6442,29 @@
     explicit set(const Compare& comp = Compare(),
                  const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
             @\addedConcepts{\&\& MoveConstructible<value_type>}@
       set(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last,
           const Compare& comp = Compare(), const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       set(const set<Key,Compare,Alloc@\removedConcepts{ator}@>& x);
     set(set<Key,Compare,Alloc@\removedConcepts{ator}@>&& x);
     set(const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       set(const set&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&>}@
       set(set&&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       set(initializer_list<value_type>,
           const Compare& = Compare(),
           const Allocator& = Allocator());
    ~set();
 
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
             @\addedConcepts{\&\& CopyAssignable<value_type>}@
       set<Key,Compare,Alloc@\removedConcepts{ator}@>& operator=(const set<Key,Compare,Alloc@\removedConcepts{ator}@>& x);
     set<Key,Compare,Alloc@\removedConcepts{ator}@>& operator=(set<Key,Compare,Alloc@\removedConcepts{ator}@>&& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
           @\addedConcepts{\&\& CopyAssignable<value_type>}@
       set<Key,Compare,Alloc@\removedConcepts{ator}@>& operator=(initializer_list<value_type>);
     allocator_type get_allocator() const;
@@ -6531,23 +6492,23 @@
 
     // modifiers:
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Args\&\&...>}@
       pair<iterator, bool> emplace(Args&&... args);
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Args\&\&...>}@
       iterator emplace_hint(const_iterator position, Args&&... args);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       pair<iterator,bool> insert(const value_type& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&>}@
       pair<iterator,bool> insert(value_type&& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       iterator insert(const_iterator position, const value_type& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&>}@
       iterator insert(const_iterator position, value_type&& x);
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference> \&\& MoveConstructible<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference> \&\& MoveConstructible<value_type>}@
       void insert(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       void insert(initializer_list<value_type>);
 
     iterator erase(const_iterator position);
@@ -6634,7 +6595,7 @@
 
 \begin{itemdecl}
 template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
           @\addedConcepts{\&\& MoveConstructible<value_type>}@
   set(@\changedConcepts{InputIterator}{Iter}@ @\farg{first}@, @\changedConcepts{InputIterator}{Iter}@ @\farg{last}@,
       const Compare& @\farg{comp}@ = Compare(), const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
@@ -6735,8 +6696,8 @@
   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\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Compare, Compare\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Compare, const Compare\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Compare, Compare\&\&>}@
   class multiset {
   public:
     // types:
@@ -6760,28 +6721,28 @@
     explicit multiset(const Compare& comp = Compare(),
                       const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
             @\addedConcepts{\&\& MoveConstructible<value_type>}@
       multiset(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last,
                const Compare& comp = Compare(),
                const Alloc@\removedConcepts{ator}@& = Alloc@\removedConcepts{ator}@());
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       multiset(const multiset<Key,Compare,Alloc@\removedConcepts{ator}@>& x);
     multiset(multiset<Key,Compare,Alloc@\removedConcepts{ator}@>&& x);
     multiset(const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       multiset(const multiset&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&>}@
       multiset(multiset&&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       multiset(initializer_list<value_type>,
           const Compare& = Compare(),
           const Allocator& = Allocator());
    ~multiset();
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&> \&\& CopyAssignable<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&> \&\& CopyAssignable<value_type>}@
       multiset<Key,Compare,Alloc@\removedConcepts{ator}@>& operator=(const multiset<Key,Compare,Alloc@\removedConcepts{ator}@>& x);
     multiset<Key,Compare,Alloc@\removedConcepts{ator}@>& operator=(multiset<Key,Compare,Alloc@\removedConcepts{ator}@>&& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
           @\addedConcepts{\&\& CopyAssignable<value_type>}@
       multiset<Key,Compare,Alloc@\removedConcepts{ator}@>& operator=(initializer_list<value_type>);
     allocator_type get_allocator() const;
@@ -6809,23 +6770,23 @@
 
     // modifiers:
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Args\&\&...>}@
       iterator emplace(Args&&... args);
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Args\&\&...>}@
       iterator emplace_hint(const_iterator position, Args&&... args);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       iterator insert(const value_type& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&>}@
       iterator insert(value_type&& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       iterator insert(const_iterator position, const value_type& x);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&>}@
       iterator insert(const_iterator position, value_type&& x);
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference> \&\& MoveConstructible<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference> \&\& MoveConstructible<value_type>}@
       void insert(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       void insert(initializer_list<value_type>);
 
     iterator erase(const_iterator position);
@@ -6912,7 +6873,7 @@
 
 \begin{itemdecl}
 template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
           @\addedConcepts{\&\& MoveConstructible<value_type>}@
   multiset(@\changedConcepts{InputIterator}{Iter}@ @\farg{first}@, @\changedConcepts{InputIterator}{Iter}@ @\farg{last}@,
            const Compare& @\farg{comp}@ = Compare(),
@@ -6985,10 +6946,10 @@
     @\addedConcepts{requires NothrowDestructible<Key> \&\& NothrowDestructible<T>}@
           @\addedConcepts{\&\& SameType<Hash::result_type, size_t>}@
           @\addedConcepts{\&\& CopyConstructible<Hash> \&\& CopyConstructible<Pred>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Pred, const Pred\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Pred, Pred\&\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Hash, const Hash\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Hash, Hash\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Pred, const Pred\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Pred, Pred\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Hash, const Hash\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Hash, Hash\&\&>}@
     class unordered_map;
 
   // \ref{unord.multimap}, class template unordered_multimap:
@@ -7000,10 +6961,10 @@
     @\addedConcepts{requires NothrowDestructible<Key> \&\& NothrowDestructible<T>}@
           @\addedConcepts{\&\& SameType<Hash::result_type, size_t>}@
           @\addedConcepts{\&\& CopyConstructible<Hash> \&\& CopyConstructible<Pred>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Pred, const Pred\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Pred, Pred\&\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Hash, const Hash\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Hash, Hash\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Pred, const Pred\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Pred, Pred\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Hash, const Hash\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Hash, Hash\&\&>}@
     class unordered_multimap;
 
   template <@\changedConcepts{class}{ValueType}@ Key, @\changedConcepts{class}{ValueType}@ T, class Hash, class Pred, class Alloc>
@@ -7042,10 +7003,10 @@
     @\addedConcepts{requires NothrowDestructible<Value>}@
           @\addedConcepts{\&\& SameType<Hash::result_type, size_t>}@
           @\addedConcepts{\&\& CopyConstructible<Hash> \&\& CopyConstructible<Pred>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Pred, const Pred\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Pred, Pred\&\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Hash, const Hash\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Hash, Hash\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Pred, const Pred\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Pred, Pred\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Hash, const Hash\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Hash, Hash\&\&>}@
     class unordered_set;
 
   // \ref{unord.multiset}, class template unordered_multiset:
@@ -7056,10 +7017,10 @@
     @\addedConcepts{requires NothrowDestructible<Value>}@
           @\addedConcepts{\&\& SameType<Hash::result_type, size_t>}@
           @\addedConcepts{\&\& CopyConstructible<Hash> \&\& CopyConstructible<Pred>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Pred, const Pred\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Pred, Pred\&\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Hash, const Hash\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Hash, Hash\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Pred, const Pred\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Pred, Pred\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Hash, const Hash\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Hash, Hash\&\&>}@
     class unordered_multiset;
 
   template <@\changedConcepts{class}{ValueType}@ Value, class Hash, class Pred, class Alloc>
@@ -7115,10 +7076,10 @@
   @\addedConcepts{requires NothrowDestructible<Key> \&\& NothrowDestructible<T>}@
         @\addedConcepts{\&\& SameType<Hash::result_type, size_t>}@
         @\addedConcepts{\&\& CopyConstructible<Hash> \&\& CopyConstructible<Pred>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Pred, const Pred\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Pred, Pred\&\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Hash, const Hash\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Hash, Hash\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Pred, const Pred\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Pred, Pred\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Hash, const Hash\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Hash, Hash\&\&>}@
   class unordered_map
   {
   public:
@@ -7147,34 +7108,34 @@
                            const key_equal& eql = key_equal(),
                            const allocator_type& a = allocator_type());
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
             @\addedConcepts{\&\& MoveConstructible<value_type>}@
       unordered_map(@\changedConcepts{InputIterator}{Iter}@ f, @\changedConcepts{InputIterator}{Iter}@ l,
                     size_type n = @\textit{implementation-defined}@,
                     const hasher& hf = hasher(),
                     const key_equal& eql = key_equal(),
                     const allocator_type& a = allocator_type());
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       unordered_map(const unordered_map&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&>}@
       @\addedConcepts{unordered_map(unordered_map\&\&);}@
     unordered_map(const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       unordered_map(const unordered_map&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&>}@
       unordered_map(unordered_map&&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
        unordered_map(initializer_list<value_type>,
                      size_type = @\impdef@,
                      const hasher& hf = hasher(),
                      const key_equal& eql = key_equal(),
                      const allocator_type& a = allocator_type());
     ~unordered_map();
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&> \&\& CopyAssignable<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&> \&\& CopyAssignable<value_type>}@
       unordered_map& operator=(const unordered_map&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&> \&\& MoveAssignable<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&> \&\& MoveAssignable<value_type>}@
       @\addedConcepts{unordered_map\& operator=(unordered_map\&\&);}@
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&> \&\& CopyAssignable<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&> \&\& CopyAssignable<value_type>}@
       unordered_map& operator=(initializer_list<value_type>);
     allocator_type get_allocator() const;
 
@@ -7193,26 +7154,26 @@
 
     // modifiers
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Args\&\&...>}@
       pair<iterator, bool> emplace(Args&&... args);
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Args\&\&...>}@
       iterator emplace_hint(const_iterator position, Args&&... args);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       @\removedConcepts{}@pair<iterator, bool> insert(const value_type& obj);
     @\addedConcepts{template <class P>}@
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
       @\addedConcepts{pair<iterator, bool> insert(P\&\& obj);}@
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       iterator insert(const_iterator hint, const value_type& obj);
     @\addedConcepts{template <class P>}@
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
       @\addedConcepts{pair<iterator, bool> insert(const_iterator hint, P\&\& obj);}@
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
             @\addedConcepts{\&\& MoveConstructible<value_type>}@
       void insert(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       void insert(initializer_list<value_type>);
     iterator erase(const_iterator position);
     size_type erase(const key_type& k);
@@ -7232,11 +7193,11 @@
     pair<iterator, iterator> equal_range(const key_type& k);
     pair<const_iterator, const_iterator> equal_range(const key_type& k) const;
 
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const key_type\&, mapped_type\&\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, mapped_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const key_type\&, mapped_type\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, mapped_type>}@
       mapped_type& operator[](const key_type& k);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, key_type\&\&, mapped_type\&\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, mapped_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, key_type\&\&, mapped_type\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, mapped_type>}@
       @\addedConcepts{mapped_type\& operator[](key_type\&\& k);}@
     mapped_type& at(const key_type& k);
     const mapped_type& at(const key_type& k) const;
@@ -7300,7 +7261,7 @@
 \index{unordered_map@\tcode{unordered_map}!unordered_map@\tcode{unordered_map}}%
 \begin{itemdecl}
 template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
           @\addedConcepts{\&\& MoveConstructible<value_type>}@
   unordered_map(@\changedConcepts{InputIterator}{Iter}@ f, @\changedConcepts{InputIterator}{Iter}@ l,
                 size_type n = @\textit{implementation-defined}@,
@@ -7328,12 +7289,12 @@
 \index{operator[]@\tcode{operator[]}!unordered_map@\tcode{unordered_map}}%
 \index{unordered_map@\tcode{unordered_map}!element access}%
 \begin{itemdecl}
-@\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, key_type\&\&, mapped_type\&\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, mapped_type>}@
+@\addedConcepts{requires AllocatableElement<Alloc, value_type, key_type\&\&, mapped_type\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, mapped_type>}@
   mapped_type& operator[](const key_type& k);
 
-@\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, key_type\&\&, mapped_type\&\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, mapped_type>}@
+@\addedConcepts{requires AllocatableElement<Alloc, value_type, key_type\&\&, mapped_type\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, mapped_type>}@
   @\addedConcepts{mapped_type\& operator[](key_type\&\& k);}@
 \end{itemdecl}
 
@@ -7416,10 +7377,10 @@
   @\addedConcepts{requires NothrowDestructible<Key> \&\& NothrowDestructible<T>}@
         @\addedConcepts{\&\& SameType<Hash::result_type, size_t>}@
         @\addedConcepts{\&\& CopyConstructible<Hash> \&\& CopyConstructible<Pred>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Pred, const Pred\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Pred, Pred\&\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Hash, const Hash\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Hash, Hash\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Pred, const Pred\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Pred, Pred\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Hash, const Hash\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Hash, Hash\&\&>}@
   class unordered_multimap
   {
   public:
@@ -7448,34 +7409,34 @@
                                 const key_equal& eql = key_equal(),
                                 const allocator_type& a = allocator_type());
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
             @\addedConcepts{\&\& MoveConstructible<value_type>}@
       unordered_multimap(@\changedConcepts{InputIterator}{Iter}@ f, @\changedConcepts{InputIterator}{Iter}@ l,
                          size_type n = @\textit{implementation-defined}@,
                          const hasher& hf = hasher(),
                          const key_equal& eql = key_equal(),
                          const allocator_type& a = allocator_type());
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       unordered_multimap(const unordered_multimap&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&>}@
       @\addedConcepts{unordered_multimap(unordered_multimap\&\&);}@
     unordered_multimap(const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
        unordered_multimap(const unordered_multimap&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&>}@
        unordered_multimap(unordered_multimap&&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
        unordered_multimap(initializer_list<value_type>,
                           size_type = @\impdef@,
                           const hasher& hf = hasher(),
                           const key_equal& eql = key_equal(),
                           const allocator_type& a = allocator_type());
     ~unordered_multimap();
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&> \&\& CopyAssignable<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&> \&\& CopyAssignable<value_type>}@
       unordered_multimap& operator=(const unordered_multimap&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&> \&\& MoveAssignable<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&> \&\& MoveAssignable<value_type>}@
       @\addedConcepts{unordered_multimap\& operator=(unordered_multimap\&\&);}@
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&> \&\& CopyAssignable<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&> \&\& CopyAssignable<value_type>}@
       unordered_multimap& operator=(initializer_list<value_type>);
     allocator_type get_allocator() const;
 
@@ -7494,26 +7455,26 @@
 
     // modifiers
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Args\&\&...>}@
       iterator emplace(Args&&... args);
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Args\&\&...>}@
       iterator emplace_hint(const_iterator position, Args&&... args);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       iterator insert(const value_type& obj);
     @\addedConcepts{template <class P>}@
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
       @\addedConcepts{iterator insert(P\&\& obj);}@
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       iterator insert(const_iterator hint, const value_type& obj);
     @\addedConcepts{template <class P>}@
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, P\&\&> \&\& MoveConstructible<value_type>}@
       @\addedConcepts{iterator insert(const_iterator hint, P\&\& obj);}@
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
             @\addedConcepts{\&\& MoveConstructible<value_type>}@
       void insert(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       void insert(initializer_list<value_type>);
 
     iterator erase(const_iterator position);
@@ -7593,7 +7554,7 @@
 \index{unordered_multimap@\tcode{unordered_multimap}!unordered_multimap@\tcode{unordered_multimap}}%
 \begin{itemdecl}
 template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
         @\addedConcepts{\&\& MoveConstructible<value_type>}@
   unordered_multimap(@\changedConcepts{InputIterator}{Iter}@ f, @\changedConcepts{InputIterator}{Iter}@ l,
                      size_type n = @\textit{implementation-defined}@,
@@ -7666,10 +7627,10 @@
   @\addedConcepts{requires NothrowDestructible<Value>}@
         @\addedConcepts{\&\& SameType<Hash::result_type, size_t>}@
         @\addedConcepts{\&\& CopyConstructible<Hash> \&\& CopyConstructible<Pred>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Pred, const Pred\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Pred, Pred\&\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Hash, const Hash\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Hash, Hash\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Pred, const Pred\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Pred, Pred\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Hash, const Hash\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Hash, Hash\&\&>}@
   class unordered_set
   {
   public:
@@ -7697,34 +7658,34 @@
                            const key_equal& eql = key_equal(),
                            const allocator_type& a = allocator_type());
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
             @\addedConcepts{\&\& MoveConstructible<value_type>}@
       unordered_set(@\changedConcepts{InputIterator}{Iter}@ f, @\changedConcepts{InputIterator}{Iter}@ l,
                     size_type n = @\textit{implementation-defined}@,
                     const hasher& hf = hasher(),
                     const key_equal& eql = key_equal(),
                     const allocator_type& a = allocator_type());
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       unordered_set(const unordered_set&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&>}@
       @\addedConcepts{unordered_set(unordered_set\&\&);}@
     unordered_set(const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       unordered_set(const unordered_set&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&>}@
       unordered_set(unordered_set&&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
        unordered_set(initializer_list<value_type>,
                      size_type = @\impdef@,
                      const hasher& hf = hasher(),
                      const key_equal& eql = key_equal(),
                      const allocator_type& a = allocator_type());
     ~unordered_set();
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&> \&\& CopyAssignable<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&> \&\& CopyAssignable<value_type>}@
       unordered_set& operator=(const unordered_set&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&> \&\& MoveAssignable<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&> \&\& MoveAssignable<value_type>}@
       @\addedConcepts{unordered_set\& operator=(unordered_set\&\&);}@
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&> \&\& CopyAssignable<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&> \&\& CopyAssignable<value_type>}@
       unordered_set& operator=(initializer_list<value_type>);
     allocator_type get_allocator() const;
 
@@ -7743,24 +7704,24 @@
 
     // modifiers
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Args\&\&...>}@
       pair<iterator, bool> emplace(Args&&... args);
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Args\&\&...>}@
       iterator emplace_hint(const_iterator position, Args&&... args);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       @\removedConcepts{}@pair<iterator, bool> insert(const value_type& obj);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&>}@
       @\addedConcepts{pair<iterator, bool> insert(value_type\&\& obj);}@
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       iterator insert(const_iterator hint, const value_type& obj);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&>}@
       @\addedConcepts{iterator insert(const_iterator hint, value_type\&\& obj);}@
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
             @\addedConcepts{\&\& MoveConstructible<value_type>}@
       void insert(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       void insert(initializer_list<value_type>);
 
     iterator erase(const_iterator position);
@@ -7840,7 +7801,7 @@
 \index{unordered_set@\tcode{unordered_set}!unordered_set@\tcode{unordered_set}}%
 \begin{itemdecl}
 template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
         @\addedConcepts{\&\& MoveConstructible<value_type>}@
   unordered_set(@\changedConcepts{InputIterator}{Iter}@ f, @\changedConcepts{InputIterator}{Iter}@ l,
                 size_type n = @\textit{implementation-defined}@,
@@ -7912,10 +7873,10 @@
   @\addedConcepts{requires NothrowDestructible<Value>}@
         @\addedConcepts{\&\& SameType<Hash::result_type, size_t>}@
         @\addedConcepts{\&\& CopyConstructible<Hash> \&\& CopyConstructible<Pred>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Pred, const Pred\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Pred, Pred\&\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Hash, const Hash\&>}@
- @\addedConcepts{\&\& ConstructibleAsElement<Alloc, Hash, Hash\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Pred, const Pred\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Pred, Pred\&\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Hash, const Hash\&>}@
+ @\addedConcepts{\&\& AllocatableElement<Alloc, Hash, Hash\&\&>}@
   class unordered_multiset
   {
   public:
@@ -7943,34 +7904,34 @@
                                 const key_equal& eql = key_equal(),
                                 const allocator_type& a = allocator_type());
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
             @\addedConcepts{\&\& MoveConstructible<value_type>}@
       unordered_multiset(@\changedConcepts{InputIterator}{Iter}@ f, @\changedConcepts{InputIterator}{Iter}@ l,
                          size_type n = @\textit{implementation-defined}@,
                          const hasher& hf = hasher(),
                          const key_equal& eql = key_equal(),
                          const allocator_type& a = allocator_type());
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       unordered_multiset(const unordered_multiset&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&>}@
       @\addedConcepts{unordered_multiset(unordered_multiset\&\&);}@
     unordered_multiset(const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       unordered_multiset(const unordered_multiset&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&>}@
       unordered_multiset(unordered_multiset&&, const Alloc@\removedConcepts{ator}@&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
        unordered_multiset(initializer_list<value_type>,
                           size_type = @\impdef@,
                           const hasher& hf = hasher(),
                           const key_equal& eql = key_equal(),
                           const allocator_type& a = allocator_type());
     ~unordered_multiset();
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&> \&\& CopyAssignable<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&> \&\& CopyAssignable<value_type>}@
       unordered_multiset& operator=(const unordered_multiset&);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&> \&\& MoveAssignable<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&> \&\& MoveAssignable<value_type>}@
       @\addedConcepts{unordered_multiset\& operator=(unordered_multiset\&\&);}@
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&> \&\& CopyAssignable<value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&> \&\& CopyAssignable<value_type>}@
       unordered_multiset& operator=(initializer_list<value_type>);
     allocator_type get_allocator() const;
 
@@ -7989,24 +7950,24 @@
 
     // modifiers
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Args\&\&...>}@
       iterator emplace(Args&&... args);
     template <class... Args>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Args\&\&...>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Args\&\&...>}@
       iterator emplace_hint(const_iterator position, Args&&... args);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       iterator insert(const value_type& obj);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&>}@
       @\addedConcepts{iterator insert(value_type\&\& obj);}@
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       iterator insert(const_iterator hint, const value_type& obj);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, value_type\&\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, value_type\&\&>}@
       @\addedConcepts{iterator insert(const_iterator hint, value_type\&\& obj);}@
     template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::value_type>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::value_type>}@
             @\addedConcepts{\&\& MoveConstructible<value_type>}@
       void insert(@\changedConcepts{InputIterator}{Iter}@ first, @\changedConcepts{InputIterator}{Iter}@ last);
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, const value_type\&>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, const value_type\&>}@
       void insert(initializer_list<value_type>);
 
     iterator erase(const_iterator position);
@@ -8086,7 +8047,7 @@
 \index{unordered_multiset@\tcode{unordered_multiset}!unordered_multiset@\tcode{unordered_multiset}}%
 \begin{itemdecl}
 template <@\changedConcepts{class InputIterator}{InputIterator Iter}@>
- @\addedConcepts{requires ConstructibleAsElement<Alloc, value_type, Iter::reference>}@
+ @\addedConcepts{requires AllocatableElement<Alloc, value_type, Iter::reference>}@
         @\addedConcepts{\&\& MoveConstructible<value_type>}@
   unordered_multiset(@\changedConcepts{InputIterator}{Iter}@ f, @\changedConcepts{InputIterator}{Iter}@ l,
                      size_type n = @\textit{implementation-defined}@,


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