diff options
Diffstat (limited to 'gcc-4.4.3/libstdc++-v3/include/bits/move.h')
-rw-r--r-- | gcc-4.4.3/libstdc++-v3/include/bits/move.h | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/gcc-4.4.3/libstdc++-v3/include/bits/move.h b/gcc-4.4.3/libstdc++-v3/include/bits/move.h deleted file mode 100644 index b82b263a6..000000000 --- a/gcc-4.4.3/libstdc++-v3/include/bits/move.h +++ /dev/null @@ -1,120 +0,0 @@ -// Move, forward and identity for C++0x + swap -*- C++ -*- - -// Copyright (C) 2007, 2008, 2009 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 -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// <http://www.gnu.org/licenses/>. - -/** @file move.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _MOVE_H -#define _MOVE_H 1 - -#include <bits/c++config.h> -#include <cstddef> -#include <bits/concept_check.h> - -#ifdef __GXX_EXPERIMENTAL_CXX0X__ -#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::remove_reference<_Tp>::type& __t) -#ifdef __clang__ - { return static_cast<_Tp&&>(__t); } -#else - { return __t; } -#endif - - template<typename _Tp> - inline _Tp&& - forward(typename std::remove_reference<_Tp>::type&& __t) - { -#ifdef __clang__ - static_assert(!std::is_lvalue_reference<_Tp>::value, - "Can't instantiate this forward() with an" - " lvalue reference type."); - return static_cast<_Tp&&>(__t); -#else - return __t; -#endif - } - - template<typename _Tp> - inline typename std::remove_reference<_Tp>::type&& - move(_Tp&& __t) -#ifdef __clang__ - { return static_cast<typename std::remove_reference<_Tp>::type&&>(__t); } -#else - { return __t; } -#endif - -_GLIBCXX_END_NAMESPACE - -#define _GLIBCXX_MOVE(_Tp) std::move(_Tp) -#else -#define _GLIBCXX_MOVE(_Tp) (_Tp) -#endif - -_GLIBCXX_BEGIN_NAMESPACE(std) - - /** - * @brief Swaps two values. - * @param a A thing of arbitrary type. - * @param b Another thing of arbitrary type. - * @return Nothing. - */ - template<typename _Tp> - inline void - swap(_Tp& __a, _Tp& __b) - { - // concept requirements - __glibcxx_function_requires(_SGIAssignableConcept<_Tp>) - - _Tp __tmp = _GLIBCXX_MOVE(__a); - __a = _GLIBCXX_MOVE(__b); - __b = _GLIBCXX_MOVE(__tmp); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // DR 809. std::swap should be overloaded for array types. - template<typename _Tp, size_t _Nm> - inline void - swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) - { - for (size_t __n = 0; __n < _Nm; ++__n) - swap(__a[__n], __b[__n]); - } - -_GLIBCXX_END_NAMESPACE - -#endif /* _MOVE_H */ |