$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: dgregor_at_[hidden]
Date: 2008-05-30 11:58:07
Author: dgregor
Date: 2008-05-30 11:58:06 EDT (Fri, 30 May 2008)
New Revision: 45955
URL: http://svn.boost.org/trac/boost/changeset/45955
Log:
Remove MoveConstructible requirements, because we should be using ConstructibleAsElement instead
Text files modified: 
   sandbox/committee/concepts/issues/issues/issue34.xml |    25 +++++++++++--------------               
   1 files changed, 11 insertions(+), 14 deletions(-)
Modified: sandbox/committee/concepts/issues/issues/issue34.xml
==============================================================================
--- sandbox/committee/concepts/issues/issues/issue34.xml	(original)
+++ sandbox/committee/concepts/issues/issues/issue34.xml	2008-05-30 11:58:06 EDT (Fri, 30 May 2008)
@@ -85,9 +85,6 @@
     void resize(size_type sz, const T& c); 
 };
   </pre>
-  <p><i>Note</i>: LWG 704 says that <code>resize</code> for a <cod>deque</cod>
-  requires <code>MoveConstructible</code>, but it does not (because
-  one never needs to move from an existing block).</p>
 
   <p>In [forwardlist], change the definition of class template <code>forward_list</code> as follows:</p>
   <pre>
@@ -136,7 +133,7 @@
 public: 
   // ...
   template <InputIterator Iter> 
-    requires ConstructibleAsElement<Alloc, T, Iter::reference> && <del>ConstructibleAsElement<Alloc, T, T&&></del><ins>MoveConstructible<T></ins>
+    requires ConstructibleAsElement<Alloc, T, Iter::reference> && ConstructibleAsElement<Alloc, T, T&&>
     vector(Iter first, Iter last, 
            const Alloc& = Alloc()); 
 
@@ -146,39 +143,39 @@
   vector<T,Alloc>& operator=(vector<T,Alloc>&& x); 
   template <InputIterator Iter> 
     requires ConstructibleAsElement<Alloc, T, Iter::reference> 
-          <ins>&& HasCopyAssign<T, Iter::reference> && MoveConstructible<T></ins>
+          <ins>&& HasCopyAssign<T, Iter::reference> && ConstructibleAsElement<Alloc, T, T&&></ins>
     void assign(Iter first, Iter last); 
   requires ConstructibleAsElement<Alloc, T, const T&> <ins>&& CopyAssignable<T></ins> 
     void assign(size_type n, const T& u);  
 
   // ...
-  requires DefaultConstructible<T> && <del>ConstructibleAsElement<Alloc, T, T&&></del><ins>MoveConstructible<T></ins>
+  requires DefaultConstructible<T> && ConstructibleAsElement<Alloc, T, T&&>
     void resize(size_type sz); 
-  requires ConstructibleAsElement<Alloc, T, const T&> <ins>&& MoveConstructible<T></ins>
+  requires ConstructibleAsElement<Alloc, T, const T&> <ins>&& ConstructibleAsElement<Alloc, T, T&&></ins>
     void resize(size_type sz, const T& c);
 
   // ...
-  requires <del>ConstructibleAsElement<Alloc, T, T&&> </del><ins>MoveConstructible<T></ins>
+  requires ConstructibleAsElement<Alloc, T, T&&>
     void reserve(size_type n); 
 
   // ...
   template <class... Args> 
-    requires ConstructibleAsElement<Alloc, T, Args&&...> && <del>ConstructibleAsElement<Alloc, T, T&&></del><ins>MoveConstructible<T></ins>
+    requires ConstructibleAsElement<Alloc, T, Args&&...> && ConstructibleAsElement<Alloc, T, T&&>
     void push_back(Args&&... args); 
   void pop_back(); 
   template <class... Args> 
-    requires ConstructibleAsElement<Alloc, T, Args&&...> && <del>ConstructibleAsElement<Alloc, T, T&&></del><ins>MoveConstructible<T> && MoveAssignable<T></ins>
+    requires ConstructibleAsElement<Alloc, T, Args&&...> && ConstructibleAsElement<Alloc, T, T&&>
     iterator emplace(const_iterator position, Args&&... args); 
-  requires ConstructibleAsElement<Alloc, T, const T&> && MoveAssignable<T> <ins>&& MoveConstructible<T></ins>
+  requires ConstructibleAsElement<Alloc, T, const T&> && MoveAssignable<T> <ins>&& ConstructibleAsElement<Alloc, T, T&&></ins>
     iterator insert(const_iterator position, const T& x); 
-  requires ConstructibleAsElement<Alloc, T, T&&> && MoveAssignable<T> <ins>&& MoveConstructible<T></ins>
+  requires ConstructibleAsElement<Alloc, T, T&&> && MoveAssignable<T>
     void insert(const_iterator position, T&& x); 
-  requires ConstructibleAsElement<Alloc, T, const T&> && MoveAssignable<T> <ins>&& MoveConstructible<T></ins>
+  requires ConstructibleAsElement<Alloc, T, const T&> && MoveAssignable<T> <ins>&& ConstructibleAsElement<Alloc, T, T&&></ins>
     void insert(const_iterator position, size_type n, const T& x);
   template <InputIterator Iter> 
     requires ConstructibleAsElement<Alloc, T, Iter::reference> 
         <ins>&& HasCopyAssign<T, Iter::reference></ins>
-        && <del>ConstructibleAsElement<Alloc, T, T&&></del><ins>MoveConstructible<T></ins> && MoveAssignable<T> 
+        && ConstructibleAsElement<Alloc, T, T&&> && MoveAssignable<T> 
     void insert(const_iterator position, 
                 Iter first, Iter last);
 };