class iterator_adaptor_base

Declaration

template <
    typename DerivedT,
    typename WrappedIteratorT,
    typename IteratorCategoryT = typename std::iterator_traits<
        WrappedIteratorT>::iterator_category,
    typename T =
        typename std::iterator_traits<WrappedIteratorT>::value_type,
    typename DifferenceTypeT = typename std::iterator_traits<
        WrappedIteratorT>::difference_type,
    typename PointerT = std::conditional_t<
        std::is_same<T,
                     typename std::iterator_traits<
                         WrappedIteratorT>::value_type>::value,
        typename std::iterator_traits<WrappedIteratorT>::pointer,
        T*>,
    typename ReferenceT = std::conditional_t<
        std::is_same<T,
                     typename std::iterator_traits<
                         WrappedIteratorT>::value_type>::value,
        typename std::iterator_traits<WrappedIteratorT>::reference,
        T&>>
class iterator_adaptor_base { /* full declaration omitted */ };

Description

CRTP base class for adapting an iterator to a different type. This class can be used through CRTP to adapt one iterator into another. Typically this is done through providing in the derived class a custom \c operator* implementation. Other methods can be overridden as well.

Declared at: llvm/include/llvm/ADT/iterator.h:235

Templates

DerivedT
WrappedIteratorT
IteratorCategoryT = typename std::iterator_traits<WrappedIteratorT>::iterator_category
T = typename std::iterator_traits<WrappedIteratorT>::value_type
DifferenceTypeT = typename std::iterator_traits<WrappedIteratorT>::difference_type
PointerT = std::conditional_t<std::is_same<T, typename std::iterator_traits<WrappedIteratorT>::value_type>::value, typename std::iterator_traits<WrappedIteratorT>::pointer, T *>
ReferenceT = std::conditional_t<std::is_same<T, typename std::iterator_traits<WrappedIteratorT>::value_type>::value, typename std::iterator_traits<WrappedIteratorT>::reference, T &>

Member Variables

protected WrappedIteratorT I

Method Overview

Methods

iterator_adaptor_base<DerivedT,
                      WrappedIteratorT,
                      IteratorCategoryT,
                      T,
                      DifferenceTypeT,
                      PointerT,
                      ReferenceT>()

Declared at: llvm/include/llvm/ADT/iterator.h:243

iterator_adaptor_base<DerivedT,
                      WrappedIteratorT,
                      IteratorCategoryT,
                      T,
                      DifferenceTypeT,
                      PointerT,
                      ReferenceT>(
    WrappedIteratorT u)

Declared at: llvm/include/llvm/ADT/iterator.h:245

Parameters

WrappedIteratorT u

const WrappedIteratorT& wrapped() const

Declared at: llvm/include/llvm/ADT/iterator.h:250