101#ifdef _GLIBCXX_CONCEPT_CHECKS
103 typedef typename _Sequence::value_type _Sequence_value_type;
104# if __cplusplus < 201103L
105 __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
106 __glibcxx_class_requires(_Sequence, _BackInsertionSequenceConcept)
108 __glibcxx_class_requires2(_Tp, _Sequence_value_type, _SameTypeConcept)
111 template<
typename _Tp1,
typename _Seq1>
115 template<
typename _Tp1,
typename _Seq1>
119#if __cpp_lib_three_way_comparison
120 template<
typename _Tp1, three_way_comparable _Seq1>
125#if __cplusplus >= 201103L
126 template<
typename _Alloc>
127 using _Uses =
typename
130#if __cplusplus >= 201703L
134 static_assert(is_same<_Tp, typename _Sequence::value_type>::value,
135 "value_type must be the same as the underlying container");
140 typedef typename _Sequence::value_type value_type;
141 typedef typename _Sequence::reference reference;
142 typedef typename _Sequence::const_reference const_reference;
143 typedef typename _Sequence::size_type size_type;
144 typedef _Sequence container_type;
155#if __cplusplus < 201103L
157 stack(
const _Sequence& __c = _Sequence())
160 template<
typename _Seq = _Sequence,
typename _Requires =
typename
166 stack(
const _Sequence& __c)
170 stack(_Sequence&& __c)
173#if __cplusplus > 202002L
174#define __cpp_lib_adaptor_iterator_pair_constructor 202106L
176 template<
typename _InputIterator,
177 typename = _RequireInputIter<_InputIterator>>
178 stack(_InputIterator __first, _InputIterator __last)
179 : c(__first, __last) { }
183 template<
typename _Alloc,
typename _Requires = _Uses<_Alloc>>
185 stack(
const _Alloc& __a)
188 template<
typename _Alloc,
typename _Requires = _Uses<_Alloc>>
189 stack(
const _Sequence& __c,
const _Alloc& __a)
192 template<
typename _Alloc,
typename _Requires = _Uses<_Alloc>>
193 stack(_Sequence&& __c,
const _Alloc& __a)
194 : c(std::
move(__c), __a) { }
196 template<
typename _Alloc,
typename _Requires = _Uses<_Alloc>>
200 template<
typename _Alloc,
typename _Requires = _Uses<_Alloc>>
202 : c(std::
move(__q.c), __a) { }
204#if __cplusplus > 202002L
205 template<
typename _InputIterator,
typename _Alloc,
206 typename = _RequireInputIter<_InputIterator>,
207 typename = _Uses<_Alloc>>
208 stack(_InputIterator __first, _InputIterator __last,
const _Alloc& __a)
209 : c(__first, __last, __a) { }
216 _GLIBCXX_NODISCARD
bool
218 {
return c.empty(); }
234 __glibcxx_requires_nonempty();
246 __glibcxx_requires_nonempty();
261 { c.push_back(__x); }
263#if __cplusplus >= 201103L
268#if __cplusplus > 201402L
269 template<
typename... _Args>
271 emplace(_Args&&... __args)
274 template<
typename... _Args>
276 emplace(_Args&&... __args)
295 __glibcxx_requires_nonempty();
299#if __cplusplus >= 201103L
302#if __cplusplus > 201402L || !defined(__STRICT_ANSI__)
303 noexcept(__is_nothrow_swappable<_Sequence>::value)
305 noexcept(__is_nothrow_swappable<_Tp>::value)