constexpr explicit queue(const Container& cont);
constexpr explicit queue(Container&& cont);
template<class InputIterator>
  constexpr queue(InputIterator first, InputIterator last);
template<container-compatible-range<T> R>
  constexpr queue(from_range_t, R&& rg);
template<class Alloc> constexpr explicit queue(const Alloc& a);
template<class Alloc> constexpr queue(const container_type& cont, const Alloc& a);
template<class Alloc> constexpr queue(container_type&& cont, const Alloc& a);
template<class Alloc> constexpr queue(const queue& q, const Alloc& a);
template<class Alloc> constexpr queue(queue&& q, const Alloc& a);
template<class InputIterator, class Alloc>
  constexpr queue(InputIterator first, InputIterator last, const Alloc& alloc);
template<container-compatible-range<T> R, class Alloc>
  constexpr queue(from_range_t, R&& rg, const Alloc& a);
template<container-compatible-range<T> R>
  constexpr void push_range(R&& rg);
template<class T, class Container>
  constexpr bool operator==(const queue<T, Container>& x, const queue<T, Container>& y);
template<class T, class Container>
  constexpr bool operator!=(const queue<T, Container>& x,  const queue<T, Container>& y);
template<class T, class Container>
  constexpr bool operator< (const queue<T, Container>& x, const queue<T, Container>& y);
template<class T, class Container>
  constexpr bool operator> (const queue<T, Container>& x, const queue<T, Container>& y);
template<class T, class Container>
  constexpr bool operator<=(const queue<T, Container>& x, const queue<T, Container>& y);
template<class T, class Container>
  constexpr bool operator>=(const queue<T, Container>& x, const queue<T, Container>& y);
template<class T, three_way_comparable Container>
  constexpr compare_three_way_result_t<Container>
    operator<=>(const queue<T, Container>& x, const queue<T, Container>& y);
template<class T, class Container>
  constexpr void swap(queue<T, Container>& x, queue<T, Container>& y)
    noexcept(noexcept(x.swap(y)));