template<typename _Seq = _Sequence, typename _Requires = typename
enable_if<__and_<is_default_constructible<_Compare>,
is_default_constructible<_Seq>>::value>::type>
+ _GLIBCXX26_CONSTEXPR
priority_queue()
: c(), comp() { }
+ _GLIBCXX26_CONSTEXPR
explicit
priority_queue(const _Compare& __x, const _Sequence& __s)
: c(__s), comp(__x)
{ std::make_heap(c.begin(), c.end(), comp); }
+ _GLIBCXX26_CONSTEXPR
explicit
priority_queue(const _Compare& __x, _Sequence&& __s = _Sequence())
: c(std::move(__s)), comp(__x)
priority_queue(const priority_queue&) = default;
priority_queue& operator=(const priority_queue&) = default;
+ _GLIBCXX26_CONSTEXPR
priority_queue(priority_queue&& __q)
noexcept(__and_<is_nothrow_move_constructible<_Sequence>,
is_nothrow_move_constructible<_Compare>>::value)
: c(std::move(__q.c)), comp(std::move(__q.comp))
{ __q.c.clear(); }
+ _GLIBCXX26_CONSTEXPR
priority_queue&
operator=(priority_queue&& __q)
noexcept(__and_<is_nothrow_move_assignable<_Sequence>,
}
template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ _GLIBCXX26_CONSTEXPR
explicit
priority_queue(const _Alloc& __a)
: c(__a), comp() { }
template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ _GLIBCXX26_CONSTEXPR
priority_queue(const _Compare& __x, const _Alloc& __a)
: c(__a), comp(__x) { }
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 2537. Constructors [...] taking allocators should call make_heap
template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ _GLIBCXX26_CONSTEXPR
priority_queue(const _Compare& __x, const _Sequence& __c,
const _Alloc& __a)
: c(__c, __a), comp(__x)
{ std::make_heap(c.begin(), c.end(), comp); }
template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ _GLIBCXX26_CONSTEXPR
priority_queue(const _Compare& __x, _Sequence&& __c, const _Alloc& __a)
: c(std::move(__c), __a), comp(__x)
{ std::make_heap(c.begin(), c.end(), comp); }
template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ _GLIBCXX26_CONSTEXPR
priority_queue(const priority_queue& __q, const _Alloc& __a)
: c(__q.c, __a), comp(__q.comp) { }
template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ _GLIBCXX26_CONSTEXPR
priority_queue(priority_queue&& __q, const _Alloc& __a)
: c(std::move(__q.c), __a), comp(std::move(__q.comp))
{ __q.c.clear(); }
// 3529. priority_queue(first, last) should construct c with (first, last)
template<typename _InputIterator,
typename = std::_RequireInputIter<_InputIterator>>
+ _GLIBCXX26_CONSTEXPR
priority_queue(_InputIterator __first, _InputIterator __last,
const _Compare& __x = _Compare())
: c(__first, __last), comp(__x)
// 3522. Missing requirement on InputIterator template parameter
template<typename _InputIterator,
typename = std::_RequireInputIter<_InputIterator>>
+ _GLIBCXX26_CONSTEXPR
priority_queue(_InputIterator __first, _InputIterator __last,
const _Compare& __x, const _Sequence& __s)
: c(__s), comp(__x)
template<typename _InputIterator,
typename = std::_RequireInputIter<_InputIterator>>
+ _GLIBCXX26_CONSTEXPR
priority_queue(_InputIterator __first, _InputIterator __last,
const _Compare& __x, _Sequence&& __s)
: c(std::move(__s)), comp(__x)
template<typename _InputIterator, typename _Alloc,
typename = std::_RequireInputIter<_InputIterator>,
typename _Requires = _Uses<_Alloc>>
+ _GLIBCXX26_CONSTEXPR
priority_queue(_InputIterator __first, _InputIterator __last,
const _Alloc& __alloc)
: c(__first, __last, __alloc), comp()
template<typename _InputIterator, typename _Alloc,
typename = std::_RequireInputIter<_InputIterator>,
typename _Requires = _Uses<_Alloc>>
+ _GLIBCXX26_CONSTEXPR
priority_queue(_InputIterator __first, _InputIterator __last,
const _Compare& __x, const _Alloc& __alloc)
: c(__first, __last, __alloc), comp(__x)
template<typename _InputIterator, typename _Alloc,
typename = std::_RequireInputIter<_InputIterator>,
typename _Requires = _Uses<_Alloc>>
+ _GLIBCXX26_CONSTEXPR
priority_queue(_InputIterator __first, _InputIterator __last,
const _Compare& __x, const _Sequence& __s,
const _Alloc& __alloc)
template<typename _InputIterator, typename _Alloc,
typename _Requires = _Uses<_Alloc>>
+ _GLIBCXX26_CONSTEXPR
priority_queue(_InputIterator __first, _InputIterator __last,
const _Compare& __x, _Sequence&& __s,
const _Alloc& __alloc)
* @{
*/
template<__detail::__container_compatible_range<_Tp> _Rg>
+ _GLIBCXX26_CONSTEXPR
priority_queue(from_range_t, _Rg&& __rg,
const _Compare& __x = _Compare())
: c(ranges::to<_Sequence>(std::forward<_Rg>(__rg))), comp(__x)
{ std::make_heap(c.begin(), c.end(), comp); }
template<__detail::__container_compatible_range<_Tp> _Rg, typename _Alloc>
+ _GLIBCXX26_CONSTEXPR
priority_queue(from_range_t, _Rg&& __rg, const _Compare& __x,
const _Alloc& __a)
: c(ranges::to<_Sequence>(std::forward<_Rg>(__rg), __a)), comp(__x)
{ std::make_heap(c.begin(), c.end(), comp); }
template<__detail::__container_compatible_range<_Tp> _Rg, typename _Alloc>
+ _GLIBCXX26_CONSTEXPR
priority_queue(from_range_t, _Rg&& __rg, const _Alloc& __a)
: c(ranges::to<_Sequence>(std::forward<_Rg>(__rg), __a)), comp()
{ std::make_heap(c.begin(), c.end(), comp); }
/**
* Returns true if the %queue is empty.
*/
- _GLIBCXX_NODISCARD bool
+ _GLIBCXX_NODISCARD _GLIBCXX26_CONSTEXPR
+ bool
empty() const
{ return c.empty(); }
/** Returns the number of elements in the %queue. */
- _GLIBCXX_NODISCARD
+ _GLIBCXX_NODISCARD _GLIBCXX26_CONSTEXPR
size_type
size() const
{ return c.size(); }
* Returns a read-only (constant) reference to the data at the first
* element of the %queue.
*/
- _GLIBCXX_NODISCARD
+ _GLIBCXX_NODISCARD _GLIBCXX26_CONSTEXPR
const_reference
top() const
{
* The time complexity of the operation depends on the underlying
* sequence.
*/
+ _GLIBCXX26_CONSTEXPR
void
push(const value_type& __x)
{
}
#if __cplusplus >= 201103L
+ _GLIBCXX26_CONSTEXPR
void
push(value_type&& __x)
{
}
template<typename... _Args>
+ _GLIBCXX26_CONSTEXPR
void
emplace(_Args&&... __args)
{
#if __glibcxx_containers_ranges // C++ >= 23
template<__detail::__container_compatible_range<_Tp> _Rg>
+ _GLIBCXX26_CONSTEXPR
void
push_range(_Rg&& __rg)
{
* data is needed, it should be retrieved before pop() is
* called.
*/
+ _GLIBCXX26_CONSTEXPR
void
pop()
{
}
#if __cplusplus >= 201103L
+ _GLIBCXX26_CONSTEXPR
void
swap(priority_queue& __pq)
noexcept(__and_<
#if __cplusplus >= 201103L
template<typename _Tp, typename _Sequence, typename _Compare>
+ _GLIBCXX26_CONSTEXPR
inline
#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
// Constrained free swap overload, see p0185r1