WPILibC++ 2023.4.3-108-ge5452e3
iterator.h File Reference
#include "wpi/iterator_range.h"
#include <cstddef>
#include <iterator>
#include <type_traits>
#include <utility>

Go to the source code of this file.

Classes

class  wpi::iterator_facade_base< DerivedT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT >
 CRTP base class which implements the entire standard iterator facade in terms of a minimal subset of the interface. More...
 
class  wpi::iterator_facade_base< DerivedT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT >::ReferenceProxy
 A proxy object for computing a reference via indirecting a copy of an iterator. More...
 
class  wpi::iterator_facade_base< DerivedT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT >::PointerProxy
 A proxy object for computing a pointer via indirecting a copy of a reference. More...
 
class  wpi::iterator_adaptor_base< DerivedT, WrappedIteratorT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT >
 CRTP base class for adapting an iterator to a different type. More...
 
struct  wpi::pointee_iterator< WrappedIteratorT, T >
 An iterator type that allows iterating over the pointees via some other iterator. More...
 
class  wpi::pointer_iterator< WrappedIteratorT, T >
 

Namespaces

namespace  wpi
 

Typedefs

template<typename WrappedIteratorT , typename T1 = std::remove_reference_t<decltype( **std::declval<WrappedIteratorT>())>, typename T2 = std::add_pointer_t<T1>>
using wpi::raw_pointer_iterator = pointer_iterator< pointee_iterator< WrappedIteratorT, T1 >, T2 >
 

Functions

template<typename RangeT , typename WrappedIteratorT = decltype(std::begin(std::declval<RangeT>()))>
iterator_range< pointee_iterator< WrappedIteratorT > > wpi::make_pointee_range (RangeT &&Range)
 
template<typename RangeT , typename WrappedIteratorT = decltype(std::begin(std::declval<RangeT>()))>
iterator_range< pointer_iterator< WrappedIteratorT > > wpi::make_pointer_range (RangeT &&Range)