9#ifndef slimsig_slot_iterator_h
10#define slimsig_slot_iterator_h
17template <
class Container,
class Traits = std::iterator_traits<
typename Container::iterator>>
19 typename Traits::iterator_category,
20 typename Traits::value_type,
21 typename Traits::difference_type,
22 typename Traits::pointer,
23 std::forward_iterator_tag>
25using traits = std::iterator_traits<offset_iterator>;
43 return !(*
this == rhs);
76 operator bool()
const {
82template <
class Container,
class Traits = std::iterator_traits<
typename Container::iterator>>
95 using base::operator ==;
96 using base::operator !=;
97 using base::operator >;
98 using base::operator <;
99 using base::operator >=;
100 using base::operator <=;
101 operator bool()
const {
102 return bool(*
this) && bool(**
this);
107 }
while (
bool(*
this) && !(
bool(**
this)));
offset_iterator(container_type &container, size_type offset=0)
bool operator>(const offset_iterator rhs) const
bool operator>=(const offset_iterator rhs) const
typename Container::size_type size_type
offset_iterator(const offset_iterator &)=default
typename traits::reference reference
offset_iterator operator++(int)
bool operator!=(const offset_iterator rhs) const
typename traits::difference_type difference_type
offset_iterator & operator=(const offset_iterator &)=default
offset_iterator & operator++()
typename std::decay< Container >::type container_type
bool operator==(const offset_iterator &rhs) const
bool operator<(const offset_iterator rhs) const
offset_iterator & operator=(offset_iterator &&)=default
offset_iterator(offset_iterator &&)=default
typename traits::value_type value_type
bool operator<=(const offset_iterator rhs) const
typename traits::pointer pointer
const container_type * p_container
slot_iterator & operator++(int)
slot_iterator & operator++()