1 #ifndef SUBORDINATION_BASE_QUEUE_POPPER_HH     2 #define SUBORDINATION_BASE_QUEUE_POPPER_HH     6 #include <subordination/base/container_traits.hh>    19     template <
class Container, 
class Traits=queue_traits<Container>>
    21         public std::iterator<std::input_iterator_tag, typename Container::value_type>{
    24         typedef typename Container::value_type cont_value_type;
    29         using typename base_type::iterator_category;
    30         using typename base_type::value_type;
    31         using typename base_type::pointer;
    32         using typename base_type::reference;
    33         using typename base_type::difference_type;
    47         inline explicit constexpr
    66             return this->_container->empty();
    79         inline const value_type&
    81             return traits_type::front(*this->_container);
    85         inline const value_type*
    87             return &traits_type::front(*this->_container);
    93             traits_type::pop(*this->_container);
   116     inline queue_pop_iterator<C>
   117     queue_popper(C& cont) noexcept {
   118         return queue_pop_iterator<C>(cont);
   127     inline queue_pop_iterator<C>
   128     queue_popper_end(C&) noexcept {
   129         return queue_pop_iterator<C>();
   137     inline queue_pop_iterator<C,priority_queue_traits<C>>
   138     priority_queue_popper(C& cont) noexcept {
   139         return queue_pop_iterator<C,priority_queue_traits<C>>(cont);
   147     inline queue_pop_iterator<C,priority_queue_traits<C>>
   148     priority_queue_popper_end(C&) noexcept {
   149         return queue_pop_iterator<C,priority_queue_traits<C>>();
   157     inline queue_pop_iterator<C,deque_traits<C>>
   158     deque_popper(C& cont) noexcept {
   159         return queue_pop_iterator<C,deque_traits<C>>(cont);
   167     inline queue_pop_iterator<C,deque_traits<C>>
   168     deque_popper_end(C&) noexcept {
   169         return queue_pop_iterator<C,deque_traits<C>>();
   174 #endif // vim:filetype=cpp Traits traits_type
Container traits type.
Definition: queue_popper.hh:39
 
queue_pop_iterator & operator++(int)
Impossible to implement.
Definition: queue_popper.hh:102
 
Container container_type
Container type.
Definition: queue_popper.hh:37
 
queue_pop_iterator & operator++() noexcept
Remove element from the container.
Definition: queue_popper.hh:92
 
constexpr queue_pop_iterator(container_type &x) noexcept
Construct queue pop iterator from container x.
Definition: queue_popper.hh:48
 
bool operator!=(const queue_pop_iterator &rhs) const noexcept
Returns true, if the container is not empty.
Definition: queue_popper.hh:74
 
Input iterator that removes element from the container on increment.
Definition: queue_popper.hh:20
 
bool operator==(const queue_pop_iterator &) const noexcept
Returns true, if the container is empty.
Definition: queue_popper.hh:65
 
const value_type & operator *() const noexcept
Dereference.
Definition: queue_popper.hh:80
 
const value_type * operator->() const noexcept
Dereference.
Definition: queue_popper.hh:86