summaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/std/utility
diff options
context:
space:
mode:
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2007-07-10 19:28:07 +0000
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2007-07-10 19:28:07 +0000
commitaedb7188ab870d2a19fb466f27fe079e0b72e872 (patch)
tree06b1ffda5e5db018f266a44d8f7a7ae85d42fe87 /libstdc++-v3/include/std/utility
parent911efec9c202fcfbbaa1d77dabcf7dc6b07674a7 (diff)
downloadgcc-aedb7188ab870d2a19fb466f27fe079e0b72e872.tar.gz
2007-07-10 Paolo Carlini <pcarlini@suse.de>
* 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
Diffstat (limited to 'libstdc++-v3/include/std/utility')
-rw-r--r--libstdc++-v3/include/std/utility26
1 files changed, 25 insertions, 1 deletions
diff --git a/libstdc++-v3/include/std/utility b/libstdc++-v3/include/std/utility
index 21440e5d90e..e9376dc8c70 100644
--- a/libstdc++-v3/include/std/utility
+++ b/libstdc++-v3/include/std/utility
@@ -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
@@ -83,6 +84,29 @@
# 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 */