34#if __cplusplus < 201103L
38namespace std _GLIBCXX_VISIBILITY(default)
40_GLIBCXX_BEGIN_NAMESPACE_VERSION
47 template<
typename _Tp>
48 inline _GLIBCXX_CONSTEXPR _Tp*
50 {
return __builtin_addressof(__r); }
52#if __cplusplus >= 201103L
54_GLIBCXX_END_NAMESPACE_VERSION
59namespace std _GLIBCXX_VISIBILITY(default)
61_GLIBCXX_BEGIN_NAMESPACE_VERSION
74 template<
typename _Tp>
77 forward(
typename std::remove_reference<_Tp>::type& __t)
noexcept
78 {
return static_cast<_Tp&&
>(__t); }
86 template<
typename _Tp>
89 forward(
typename std::remove_reference<_Tp>::type&& __t)
noexcept
92 "std::forward must not be used to convert an rvalue to an lvalue");
93 return static_cast<_Tp&&
>(__t);
101 template<
typename _Tp>
103 constexpr typename std::remove_reference<_Tp>::type&&
105 {
return static_cast<typename std::remove_reference<_Tp>::type&&
>(__t); }
108 template<
typename _Tp>
109 struct __move_if_noexcept_cond
110 :
public __and_<__not_<is_nothrow_move_constructible<_Tp>>,
111 is_copy_constructible<_Tp>>::type { };
121 template<
typename _Tp>
124 conditional<__move_if_noexcept_cond<_Tp>::value,
const _Tp&, _Tp&&>::type
130#if __cplusplus > 201402L
133# define __cpp_lib_addressof_constexpr 201603
142 template<
typename _Tp>
144 inline _GLIBCXX17_CONSTEXPR _Tp*
150 template<
typename _Tp>
151 const _Tp*
addressof(
const _Tp&&) =
delete;
154 template <
typename _Tp,
typename _Up = _Tp>
157 __exchange(_Tp& __obj, _Up&& __new_val)
160 __obj = std::forward<_Up>(__new_val);
166#define _GLIBCXX_FWDREF(_Tp) _Tp&&
167#define _GLIBCXX_MOVE(__val) std::move(__val)
168#define _GLIBCXX_FORWARD(_Tp, __val) std::forward<_Tp>(__val)
170#define _GLIBCXX_FWDREF(_Tp) const _Tp&
171#define _GLIBCXX_MOVE(__val) (__val)
172#define _GLIBCXX_FORWARD(_Tp, __val) (__val)
186 template<
typename _Tp>
189#if __cplusplus >= 201103L
190 typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>,
191 is_move_constructible<_Tp>,
192 is_move_assignable<_Tp>>::value>::type
200#if __cplusplus < 201103L
202 __glibcxx_function_requires(_SGIAssignableConcept<_Tp>)
204 _Tp __tmp = _GLIBCXX_MOVE(__a);
205 __a = _GLIBCXX_MOVE(__b);
206 __b = _GLIBCXX_MOVE(__tmp);
212 template<
typename _Tp,
size_t _Nm>
215#if __cplusplus >= 201103L
216 typename enable_if<__is_swappable<_Tp>::value>::type
220 swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
221 _GLIBCXX_NOEXCEPT_IF(__is_nothrow_swappable<_Tp>::value)
223 for (
size_t __n = 0; __n < _Nm; ++__n)
224 swap(__a[__n], __b[__n]);
228_GLIBCXX_END_NAMESPACE_VERSION
constexpr _Tp * addressof(_Tp &__r) noexcept
Returns the actual address of the object or function referenced by r, even in the presence of an over...
constexpr std::remove_reference< _Tp >::type && move(_Tp &&__t) noexcept
Convert a value to an rvalue.
constexpr conditional< __move_if_noexcept_cond< _Tp >::value, const_Tp &, _Tp && >::type move_if_noexcept(_Tp &__x) noexcept
Conditionally convert a value to an rvalue.
void swap(any &__x, any &__y) noexcept
Exchange the states of two any objects.
constexpr _Tp * __addressof(_Tp &__r) noexcept
Same as C++11 std::addressof.
constexpr _Tp && forward(typename std::remove_reference< _Tp >::type &__t) noexcept
Forward an lvalue.
ISO C++ entities toplevel namespace is std.
is_nothrow_move_constructible
is_nothrow_move_assignable