|
| | ref_iterator ()=default |
| | ref_iterator (const ref_iterator &other) |
| | ref_iterator (ref_iterator &&other) noexcept |
| ref_iterator & | operator= (const ref_iterator &other) |
| ref_iterator & | operator= (ref_iterator &&other) noexcept |
| template<class T2, typename U2, class IT2, typename = std::enable_if_t< !std::is_same_v<ref_iterator, ref_iterator<T2, U2, IT2>> && std::is_same_v<decay_t<T>, decay_t<T2>> >> |
| | ref_iterator (const ref_iterator< T2, U2, IT2 > &other) |
| | ~ref_iterator ()=default |
| | ref_iterator (details::container_arg_t< T > container) |
| void | swap (ref_iterator &other) noexcept |
| ref_iterator & | operator++ () |
| ref_iterator | operator++ (int) |
| ref_iterator & | operator-- () |
| ref_iterator | operator-- (int) |
| ref_iterator & | operator+= (const typename ref_iterator::difference_type &movement) |
| ref_iterator & | operator-= (const typename ref_iterator::difference_type &movement) |
| std::enable_if_t<!std::is_const_v< ref_t >, remove_const_t< ref_t > > | operator[] (size_t n) |
| add_const_t< ref_t > | operator[] (size_t n) const |
| ref_iterator | operator+ (typename ref_iterator::difference_type n) const |
| ref_iterator | operator- (typename ref_iterator::difference_type n) const |
| ref_iterator::difference_type | operator- (const ref_iterator &rhs) const |
| bool | operator< (const ref_iterator &rhs) const |
| bool | operator> (const ref_iterator &rhs) const |
| bool | operator>= (const ref_iterator &rhs) const |
| bool | operator<= (const ref_iterator &rhs) const |
| ref_iterator | begin () const |
| ref_iterator | cbegin () const |
| ref_iterator | end () const |
| ref_iterator | cend () const |
| bool | is_end () const |
| bool | operator== (const ref_iterator &other) const |
| bool | operator!= (const ref_iterator &other) const |
| size_t | size () const |
| bool | empty () const |
| std::enable_if_t<!std::is_const_v< ref_t >, remove_const_t< ref_t > > | operator* () |
| add_const_t< ref_t > | operator* () const |
| std::enable_if_t<!std::is_const_v< pointer_t >, pointer_t > | operator-> () |
| add_const_t< pointer_t > | operator-> () const |
template<class T, typename U = typename decay_t<T>::value_type, class ITERATOR_T = typename decay_t<T>::iterator>
class LIEF::ref_iterator< T, U, ITERATOR_T >
Iterator which returns reference on container's values.
This class is both an iterator and the range over the whole container: begin() and end() return iterators on the first and past-the-end elements, whatever the current position of the iterator.
If T is not a reference, the iterator owns the container: copying the iterator copies the container.
IMPORTANT: An iterator that owns its container is not a view since it is not cheap to copy. It models std::bidirectional_iterator if the container holds pointers (U is a pointer) and std::input_iterator otherwise.
template<class T, typename U = typename decay_t<T>::value_type, class ITERATOR_T = typename decay_t<T>::iterator>
template<class T2, typename U2, class IT2, typename = std::enable_if_t< !std::is_same_v<ref_iterator, ref_iterator<T2, U2, IT2>> && std::is_same_v<decay_t<T>, decay_t<T2>> >>
| LIEF::ref_iterator< T, U, ITERATOR_T >::ref_iterator |
( |
const ref_iterator< T2, U2, IT2 > & | other | ) |
|
|
inline |