43 template <
typename T,
typename = sfinae>
55 template <
typename T2>
74 iElement{ aElement }, iOffset{ aOffset }
78 iElement{ aOther.iElement }, iOffset{ aOther.iOffset }
81 template <
typename Iterator>
82 offset_iterator(
const Iterator& aOther, std::enable_if_t<!std::is_same_v<Iterator, self_type> && std::is_same_v<Iterator,
offset_iterator<std::remove_const_t<value_type>>>,
sfinae> = {}) :
83 iElement{ aOther.iElement }, iOffset{ aOther.iOffset }
109 std::ptrdiff_t iOffset;
112 template <
typename T>
153 virtual std::ptrdiff_t iterator_offset()
const = 0;
iterator erase(const abstract_iterator &aPosition)
virtual size_type size() const noexcept=0
const_iterator begin() const
abstract_const_iterator::iterator_wrapper const_iterator
const_iterator cbegin() const
abstract_iterator::iterator_wrapper iterator
offset_iterator< value_type > iterator
iterator insert(const const_iterator &aPosition, const value_type &aValue)
iterator erase(const const_iterator &aPosition)
const_iterator end() const
const_reverse_iterator crbegin() const
reverse_iterator rbegin()
virtual const value_type & at(size_type aIndex) const =0
const_reverse_iterator rbegin() const
const_reverse_iterator crend() const
std::reverse_iterator< iterator > reverse_iterator
std::reverse_iterator< const_iterator > const_reverse_iterator
virtual const value_type * data() const noexcept=0
const_iterator cbegin() const
offset_iterator< const value_type > const_iterator
const_iterator cend() const
const_reverse_iterator rend() const
virtual const value_type * cdata() const noexcept=0
const_iterator begin() const
iterator insert(const abstract_iterator &aPosition, const value_type &aValue)
pointer operator->() const
std::ptrdiff_t difference_type
offset_iterator & operator--()
bool operator==(const offset_iterator &aOther) const
offset_iterator operator-(difference_type aDifference) const
bool operator>(const offset_iterator &aOther) const
bool operator<=(const offset_iterator &aOther) const
offset_iterator operator--(int)
offset_iterator & operator++()
bool operator>=(const offset_iterator &aOther) const
std::random_access_iterator_tag iterator_category
bool operator!=(const offset_iterator &aOther) const
difference_type operator-(const offset_iterator &aOther) const
offset_iterator operator+(difference_type aDifference) const
offset_iterator & operator-=(difference_type aDifference)
offset_iterator(std::nullptr_t)
bool operator<(const offset_iterator &aOther) const
reference operator*() const
offset_iterator(const Iterator &aOther, std::enable_if_t<!std::is_same_v< Iterator, self_type > &&std::is_same_v< Iterator, offset_iterator< std::remove_const_t< value_type > > >, sfinae >={})
reference operator[](difference_type aDifference) const
offset_iterator operator++(int)
offset_iterator(const self_type &aOther)
offset_iterator & operator+=(difference_type aDifference)
offset_iterator(T *aElement, std::ptrdiff_t aOffset)
typename offset_pointer< T >::pointer_type offset_pointer_t
it_type next(it_type it, const typename iterator_traits< it_type >::difference_type distance=1)
iterator_traits< it_type >::difference_type distance(const it_type first, const it_type last)
char const * pointer_type