29 #ifndef _GLIBCXX_PROFILE_FORWARD_LIST
30 #define _GLIBCXX_PROFILE_FORWARD_LIST 1
32 #if __cplusplus < 201103L
38 namespace std _GLIBCXX_VISIBILITY(default)
43 template<
typename _Tp,
typename _Alloc = std::allocator<_Tp> >
45 :
public _GLIBCXX_STD_C::forward_list<_Tp, _Alloc>
47 typedef _GLIBCXX_STD_C::forward_list<_Tp, _Alloc>
_Base;
50 rebind<_GLIBCXX_STD_C::_Fwd_list_node<_Tp>>::other _Node_alloc_type;
55 typedef typename _Base::size_type size_type;
67 :
_Base(std::move(__list), __al)
71 forward_list(size_type __n,
const _Alloc& __al = _Alloc())
76 const _Alloc& __al = _Alloc())
77 :
_Base(__n, __value, __al)
80 template<
typename _InputIterator,
81 typename = std::_RequireInputIter<_InputIterator>>
82 forward_list(_InputIterator __first, _InputIterator __last,
83 const _Alloc& __al = _Alloc())
84 :
_Base(__first, __last, __al)
87 forward_list(
const forward_list& __list)
91 forward_list(forward_list&& __list) noexcept
92 :
_Base(std::move(__list)) { }
95 const _Alloc& __al = _Alloc())
99 ~forward_list() noexcept
103 operator=(
const forward_list& __list)
105 static_cast<_Base&
>(*this) = __list;
110 operator=(forward_list&& __list)
111 noexcept(_Node_alloc_traits::_S_nothrow_move())
113 static_cast<_Base&
>(*this) = std::move(__list);
120 static_cast<_Base&
>(*this) = __il;
125 _M_base() noexcept {
return *
this; }
128 _M_base()
const noexcept {
return *
this; }
131 template<
typename _Tp,
typename _Alloc>
135 {
return __lx._M_base() == __ly._M_base(); }
137 template<
typename _Tp,
typename _Alloc>
139 operator<(const forward_list<_Tp, _Alloc>& __lx,
141 {
return __lx._M_base() < __ly._M_base(); }
143 template<
typename _Tp,
typename _Alloc>
145 operator!=(
const forward_list<_Tp, _Alloc>& __lx,
146 const forward_list<_Tp, _Alloc>& __ly)
147 {
return !(__lx == __ly); }
150 template<
typename _Tp,
typename _Alloc>
154 {
return (__ly < __lx); }
157 template<
typename _Tp,
typename _Alloc>
161 {
return !(__lx < __ly); }
164 template<
typename _Tp,
typename _Alloc>
166 operator<=(const forward_list<_Tp, _Alloc>& __lx,
168 {
return !(__ly < __lx); }
171 template<
typename _Tp,
typename _Alloc>
Uniform interface to C++98 and C++0x allocators.
Class std::forward_list wrapper with performance instrumentation.
void swap(function< _Res(_Args...)> &__x, function< _Res(_Args...)> &__y)
Swap the targets of two polymorphic function object wrappers.
A standard container with linear time access to elements, and fixed time insertion/deletion at any po...