2007-10-08 Paolo Carlini <pcarlini@suse.de>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 8 Oct 2007 11:16:51 +0000 (11:16 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 8 Oct 2007 11:16:51 +0000 (11:16 +0000)
* include/std/utility (identity, move, forward): Move to...
* include/bits/stl_move.h: ... here.
* include/Makefile.am: Add.
* include/bits/stl_algobase.h: Include the latter.
* include/Makefile.in: Regenerate.
* testsuite/20_util/pair/moveable.cc: Remove dg-require-rvalref.

2007-10-08  Chris Jefferson  <chris@bubblescope.net>
    Paolo Carlini  <pcarlini@suse.de>

* include/bits/stl_pair.h (pair<>:pair(pair&&),
pair<>::operator=(pair&&)): Add.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129123 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/include/Makefile.am
libstdc++-v3/include/Makefile.in
libstdc++-v3/include/bits/stl_algobase.h
libstdc++-v3/include/bits/stl_pair.h
libstdc++-v3/include/std/utility
libstdc++-v3/testsuite/20_util/pair/moveable.cc

index 356b8d1..9b41330 100644 (file)
@@ -1,3 +1,18 @@
+2007-10-08  Paolo Carlini  <pcarlini@suse.de>
+
+       * include/std/utility (identity, move, forward): Move to...
+       * include/bits/stl_move.h: ... here.
+       * include/Makefile.am: Add.
+       * include/bits/stl_algobase.h: Include the latter.
+       * include/Makefile.in: Regenerate.
+       * testsuite/20_util/pair/moveable.cc: Remove dg-require-rvalref.
+
+2007-10-08  Chris Jefferson  <chris@bubblescope.net>
+           Paolo Carlini  <pcarlini@suse.de>
+
+       * include/bits/stl_pair.h (pair<>:pair(pair&&),
+       pair<>::operator=(pair&&)): Add.
+
 2007-10-07  Chris Jefferson  <chris@bubblescope.net>
            Paolo Carlini  <pcarlini@suse.de>
 
index 017ffcb..2e2609c 100644 (file)
@@ -120,6 +120,7 @@ bits_headers = \
        ${bits_srcdir}/stl_list.h \
        ${bits_srcdir}/stl_map.h \
        ${bits_srcdir}/stl_auto_ptr.h \
+       ${bits_srcdir}/stl_move.h \
        ${bits_srcdir}/stl_multimap.h \
        ${bits_srcdir}/stl_multiset.h \
        ${bits_srcdir}/stl_numeric.h \
index 0558c66..d1db21d 100644 (file)
@@ -369,6 +369,7 @@ bits_headers = \
        ${bits_srcdir}/stl_list.h \
        ${bits_srcdir}/stl_map.h \
        ${bits_srcdir}/stl_auto_ptr.h \
+       ${bits_srcdir}/stl_move.h \
        ${bits_srcdir}/stl_multimap.h \
        ${bits_srcdir}/stl_multiset.h \
        ${bits_srcdir}/stl_numeric.h \
index e0e2850..9d055fc 100644 (file)
@@ -75,7 +75,7 @@
 #include <debug/debug.h>
 
 #ifdef __GXX_EXPERIMENTAL_CXX0X__
-# include <utility>
+# include <bits/stl_move.h>
 # define _GLIBCXX_MOVE(_Tp) std::move(_Tp)
 #else
 # define _GLIBCXX_MOVE(_Tp) _Tp
index bdc6723..9740526 100644 (file)
 #ifndef _STL_PAIR_H
 #define _STL_PAIR_H 1
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+#include <bits/stl_move.h>
+#endif
+
 _GLIBCXX_BEGIN_NAMESPACE(std)
 
   /// pair holds two objects of arbitrary type.
@@ -89,6 +93,20 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
       template<class _U1, class _U2>
         pair(const pair<_U1, _U2>& __p)
        : first(__p.first), second(__p.second) { }
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      pair(pair&& __p)
+      : first(std::move(__p.first)),
+       second(std::move(__p.second)) { }
+
+      pair&
+      operator=(pair&& __p)
+      { 
+       first = std::move(__p.first);
+       second = std::move(__p.second);
+       return *this;
+      }
+#endif
     };
 
   /// Two pairs of the same type are equal iff their members are equal.
index 5020b95..67e4b73 100644 (file)
 #    undef _GLIBCXX_BEGIN_NAMESPACE_TR1
 #    undef _GLIBCXX_INCLUDE_AS_CXX0X
 #  endif
-
-#include <type_traits>
-
-_GLIBCXX_BEGIN_NAMESPACE(std)
-
-  // 20.2.2, forward/move
-  template<typename _Tp>
-    struct identity
-    {
-      typedef _Tp type;
-    };
-
-  template<typename _Tp>
-    inline _Tp&&
-    forward(typename std::identity<_Tp>::type&& __t)
-    { return __t; }
-
-  template<typename _Tp>
-    inline typename std::remove_reference<_Tp>::type&&
-    move(_Tp&& __t)
-    { return __t; }
-
-_GLIBCXX_END_NAMESPACE
-
+#  include <bits/stl_move.h>
 #endif
 
 #endif /* _GLIBCXX_UTILITY */
index 8a0e593..e843210 100644 (file)
@@ -1,4 +1,3 @@
-// { dg-require-rvalref "" }
 // { dg-options "-std=gnu++0x" }
 
 // Copyright (C) 2005, 2007 Free Software Foundation, Inc.