cycle_ptr
Public Types | Public Member Functions | Friends | List of all members
cycle_ptr::detail::llist< T, Tag >::iterator Class Reference

Iterator for llist. More...

#include <llist.h>

Public Types

using value_type = T
 Value type of the list. More...
 
using reference = T &
 Reference type of the list. More...
 
using pointer = T *
 Pointer type of the list. More...
 
using difference_type = std::intptr_t
 Difference type of the iterator.
 
using iterator_category = std::bidirectional_iterator_tag
 Iterator is a bidirectional iterator.
 

Public Member Functions

constexpr iterator () noexcept=default
 Default constructor. More...
 
auto operator * () const noexcept -> T &
 Dereference operation. More...
 
auto operator-> () const noexcept -> T *
 Indirection operation. More...
 
auto operator++ () noexcept -> iterator &
 Advance iterator. More...
 
auto operator-- () noexcept -> iterator &
 Move iterator position backward. More...
 
auto operator++ (int) noexcept -> iterator
 Advance iterator. More...
 
auto operator-- (int) noexcept -> iterator
 Move iterator position backward. More...
 
auto operator== (const iterator &other) const noexcept -> bool
 Equality comparator.
 
auto operator!= (const iterator &other) const noexcept -> bool
 Inequality comparator.
 
auto operator== (const const_iterator &other) const noexcept -> bool
 Equality comparator.
 
auto operator!= (const const_iterator &other) const noexcept -> bool
 Inequality comparator.
 

Friends

template<typename , typename >
class llist
 

Detailed Description

template<typename T, typename Tag>
class cycle_ptr::detail::llist< T, Tag >::iterator

Iterator for llist.

Member Typedef Documentation

◆ pointer

template<typename T, typename Tag>
using cycle_ptr::detail::llist< T, Tag >::iterator::pointer = T*

Pointer type of the list.

◆ reference

template<typename T, typename Tag>
using cycle_ptr::detail::llist< T, Tag >::iterator::reference = T&

Reference type of the list.

◆ value_type

template<typename T, typename Tag>
using cycle_ptr::detail::llist< T, Tag >::iterator::value_type = T

Value type of the list.

Constructor & Destructor Documentation

◆ iterator()

template<typename T, typename Tag>
constexpr cycle_ptr::detail::llist< T, Tag >::iterator::iterator ( )
defaultnoexcept

Default constructor.

Creates an iterator that cannot be dereferenced or advanced.

Member Function Documentation

◆ operator *()

template<typename T, typename Tag>
auto cycle_ptr::detail::llist< T, Tag >::iterator::operator * ( ) const -> T&
inlinenoexcept

Dereference operation.

Precondition
This iterator is dereferenceable.

◆ operator++() [1/2]

template<typename T, typename Tag>
auto cycle_ptr::detail::llist< T, Tag >::iterator::operator++ ( ) -> iterator&
inlinenoexcept

Advance iterator.

Returns
*this

◆ operator++() [2/2]

template<typename T, typename Tag>
auto cycle_ptr::detail::llist< T, Tag >::iterator::operator++ ( int  ) -> iterator
inlinenoexcept

Advance iterator.

Returns
original value of *this

◆ operator--() [1/2]

template<typename T, typename Tag>
auto cycle_ptr::detail::llist< T, Tag >::iterator::operator-- ( ) -> iterator&
inlinenoexcept

Move iterator position backward.

Returns
*this

◆ operator--() [2/2]

template<typename T, typename Tag>
auto cycle_ptr::detail::llist< T, Tag >::iterator::operator-- ( int  ) -> iterator
inlinenoexcept

Move iterator position backward.

Returns
original value of *this

◆ operator->()

template<typename T, typename Tag>
auto cycle_ptr::detail::llist< T, Tag >::iterator::operator-> ( ) const -> T*
inlinenoexcept

Indirection operation.

Precondition
This iterator is dereferenceable.

The documentation for this class was generated from the following file: