2007-07-10 Paolo Carlini <pcarlini@suse.de>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 10 Jul 2007 19:28:07 +0000 (19:28 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 10 Jul 2007 19:28:07 +0000 (19:28 +0000)
* include/std/utility (identity, move, forward): Add.
* testsuite/20_util/move/requirements/explicit_instantiation.cc: New.
* testsuite/20_util/move/1.cc: New.
* testsuite/20_util/identity/value.cc: New.
* testsuite/20_util/identity/requirements/typedefs.cc: New.
* testsuite/20_util/identity/requirements/explicit_instantiation.cc:
New.
* testsuite/20_util/forward/requirements/explicit_instantiation.cc:
New.
* testsuite/20_util/forward/1.cc: New.
* testsuite/20_util/forward/1_neg.cc: New.

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

libstdc++-v3/include/std/utility

index 21440e5..e9376dc 100644 (file)
@@ -1,6 +1,7 @@
 // <utility> -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2006 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
+// Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
 #    undef _GLIBCXX_BEGIN_NAMESPACE_TR1
 #    undef _GLIBCXX_INCLUDE_AS_CXX0X
 #  endif
+
+#include <type_traits>
+
+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; }
+}
+
 #endif
 
 #endif /* _GLIBCXX_UTILITY */