57 #define _STL_STACK_H 1
64 _GLIBCXX_BEGIN_NAMESPACE_VERSION
95 template<
typename _Tp,
typename _Sequence = deque<_Tp> >
99 typedef typename _Sequence::value_type _Sequence_value_type;
104 template<
typename _Tp1,
typename _Seq1>
106 operator==(
const stack<_Tp1, _Seq1>&,
const stack<_Tp1, _Seq1>&);
108 template<
typename _Tp1,
typename _Seq1>
110 operator<(const stack<_Tp1, _Seq1>&,
const stack<_Tp1, _Seq1>&);
113 typedef typename _Sequence::value_type value_type;
114 typedef typename _Sequence::reference reference;
115 typedef typename _Sequence::const_reference const_reference;
116 typedef typename _Sequence::size_type size_type;
117 typedef _Sequence container_type;
128 #if __cplusplus < 201103L
130 stack(
const _Sequence& __c = _Sequence())
134 stack(
const _Sequence& __c)
138 stack(_Sequence&& __c = _Sequence())
139 : c(std::move(__c)) { }
147 {
return c.empty(); }
186 push(
const value_type& __x)
187 { c.push_back(__x); }
189 #if __cplusplus >= 201103L
191 push(value_type&& __x)
192 { c.push_back(std::move(__x)); }
194 template<
typename... _Args>
196 emplace(_Args&&... __args)
197 { c.emplace_back(std::forward<_Args>(__args)...); }
218 #if __cplusplus >= 201103L
221 noexcept(noexcept(
swap(c, __s.c)))
241 template<
typename _Tp,
typename _Seq>
243 operator==(
const stack<_Tp, _Seq>& __x,
const stack<_Tp, _Seq>& __y)
244 {
return __x.c == __y.c; }
259 template<
typename _Tp,
typename _Seq>
261 operator<(const stack<_Tp, _Seq>& __x,
const stack<_Tp, _Seq>& __y)
262 {
return __x.c < __y.c; }
265 template<
typename _Tp,
typename _Seq>
267 operator!=(
const stack<_Tp, _Seq>& __x,
const stack<_Tp, _Seq>& __y)
268 {
return !(__x == __y); }
271 template<
typename _Tp,
typename _Seq>
273 operator>(
const stack<_Tp, _Seq>& __x,
const stack<_Tp, _Seq>& __y)
274 {
return __y < __x; }
277 template<
typename _Tp,
typename _Seq>
279 operator<=(const stack<_Tp, _Seq>& __x,
const stack<_Tp, _Seq>& __y)
280 {
return !(__y < __x); }
283 template<
typename _Tp,
typename _Seq>
285 operator>=(
const stack<_Tp, _Seq>& __x,
const stack<_Tp, _Seq>& __y)
286 {
return !(__x < __y); }
288 #if __cplusplus >= 201103L
289 template<
typename _Tp,
typename _Seq>
291 swap(stack<_Tp, _Seq>& __x, stack<_Tp, _Seq>& __y)
292 noexcept(noexcept(__x.swap(__y)))
295 template<
typename _Tp,
typename _Seq,
typename _Alloc>
296 struct uses_allocator<stack<_Tp, _Seq>, _Alloc>
297 :
public uses_allocator<_Seq, _Alloc>::type { };
300 _GLIBCXX_END_NAMESPACE_VERSION
bool operator>=(const _Safe_iterator< _IteratorL, _Sequence > &__lhs, const _Safe_iterator< _IteratorR, _Sequence > &__rhs)
Definition: safe_iterator.h:644
bool operator==(const exception_ptr &, const exception_ptr &) _GLIBCXX_USE_NOEXCEPT __attribute__((__pure__))
#define __glibcxx_class_requires(_a, _b)
Definition: concept_check.h:48
#define __glibcxx_requires_nonempty()
Definition: debug.h:77
bool operator>(const _Safe_iterator< _IteratorL, _Sequence > &__lhs, const _Safe_iterator< _IteratorR, _Sequence > &__rhs)
Definition: safe_iterator.h:612
#define __glibcxx_class_requires2(_a, _b, _c)
Definition: concept_check.h:49
bool operator!=(const exception_ptr &, const exception_ptr &) _GLIBCXX_USE_NOEXCEPT __attribute__((__pure__))
namespace std _GLIBCXX_VISIBILITY(default)
Definition: stl_stack.h:62
void swap(exception_ptr &__lhs, exception_ptr &__rhs)
Definition: exception_ptr.h:160