diff options
author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-07-10 19:28:07 +0000 |
---|---|---|
committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-07-10 19:28:07 +0000 |
commit | aedb7188ab870d2a19fb466f27fe079e0b72e872 (patch) | |
tree | 06b1ffda5e5db018f266a44d8f7a7ae85d42fe87 /libstdc++-v3/include/std/utility | |
parent | 911efec9c202fcfbbaa1d77dabcf7dc6b07674a7 (diff) | |
download | gcc-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/utility | 26 |
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 */ |