utility (identity, [...]): Add.

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.

From-SVN: r126524
This commit is contained in:
Paolo Carlini 2007-07-10 19:28:07 +00:00
parent 558be301bd
commit f425a30a1e

View File

@ -1,6 +1,7 @@
// <utility> -*- C++ -*- // <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 // 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 // software; you can redistribute it and/or modify it under the
@ -83,6 +84,29 @@
# undef _GLIBCXX_BEGIN_NAMESPACE_TR1 # undef _GLIBCXX_BEGIN_NAMESPACE_TR1
# undef _GLIBCXX_INCLUDE_AS_CXX0X # undef _GLIBCXX_INCLUDE_AS_CXX0X
# endif # 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
#endif /* _GLIBCXX_UTILITY */ #endif /* _GLIBCXX_UTILITY */