#include "ROOT/RSpan.hxx"
#include <cassert>
#include <iterator>
#include <type_traits>
#include <utility>
 | 
| struct   | ROOT::Internal::RBaseType< T > | 
|   | 
| struct   | ROOT::Internal::RCast< T, isDynamic, isPolymorphic > | 
|   | 
| struct   | ROOT::Internal::RCast< T, false, false > | 
|   | 
| struct   | ROOT::Internal::RCast< T, false, true > | 
|   | 
| class   | ROOT::RRangeCast< T, isDynamic, Range_t > | 
|   | Wraps any collection that can be used in range-based loops and applies static_cast<T> or dynamic_cast<T> to each element.  More...
  | 
|   | 
| class   | ROOT::Internal::TypedIter< T, WrappedIterator_t, isDynamic > | 
|   | 
 | 
| namespace   | ROOT | 
|   | tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tbb::task_arena without forward declaring tbb::interface7 
  | 
|   | 
| namespace   | ROOT::Internal | 
|   | 
 | 
| template<typename >  | 
| constexpr bool  | ROOT::Internal::hasBeginEnd (...) | 
|   | 
| template<typename T >  | 
| constexpr auto  | ROOT::Internal::hasBeginEnd (int) -> decltype(std::begin(std::declval< T >()), std::end(std::declval< T >()), true) | 
|   | 
| template<typename T , typename Range_t >  | 
| RRangeCast< T, true, Range_t >  | ROOT::RangeDynCast (Range_t &&coll) | 
|   | Takes any collection that can be used in range-based loops and applies dynamic_cast<T> to each element.  
  | 
|   | 
| template<typename T , typename U , std::size_t N>  | 
| RRangeCast< T, true, std::span< U > >  | ROOT::RangeDynCast (U(&arr)[N]) | 
|   | 
| template<typename T , typename Range_t >  | 
| RRangeCast< T, false, Range_t >  | ROOT::RangeStaticCast (Range_t &&coll) | 
|   | Takes any collection that can be used in range-based loops and applies static_cast<T> to each element.  
  | 
|   | 
| template<typename T , typename U , std::size_t N>  | 
| RRangeCast< T, false, std::span< U > >  | ROOT::RangeStaticCast (U(&arr)[N]) | 
|   |