4#ifndef _Stroika_Foundation_Containers_DataHyperRectangle_h_ 
    5#define _Stroika_Foundation_Containers_DataHyperRectangle_h_ 1 
    7#include "Stroika/Foundation/StroikaPreComp.h" 
   10#include "Stroika/Foundation/Containers/Common.h" 
   35    using Traversal::Iterable;
 
   36    using Traversal::Iterator;
 
   60    template <
typename T, 
typename... INDEXES>
 
  104        nonvirtual T GetAt (INDEXES... indexes) 
const;
 
  113        template <
typename INDEX, 
typename... REST_OF_INDEXES>
 
  114        struct TemporarySliceReference_ {
 
  116            tuple<REST_OF_INDEXES...>                fSliceIdxes;
 
  117            T                                        operator[] (INDEX i)
 const 
  119                return fCube.GetAt (i, forward<REST_OF_INDEXES> (fSliceIdxes)...);
 
  129        template <
typename INDEX, 
typename... REST_OF_INDEXES>
 
  130        nonvirtual TemporarySliceReference_<REST_OF_INDEXES...> 
operator[] (INDEX i1) 
const;
 
  133        template <
typename ELEMENT_EQUALS_COMPARER = equal_to<T>>
 
  134        struct EqualsComparer;
 
  140            requires (equality_comparable<T>);
 
  145        template <
typename T2>
 
  146        using _SafeReadRepAccessor = 
typename inherited::template _SafeReadRepAccessor<T2>;
 
  151        template <
typename T2>
 
  152        using _SafeReadWriteRepAccessor = 
typename inherited::template _SafeReadWriteRepAccessor<T2>;
 
  155        nonvirtual 
void _AssertRepValidType () 
const;
 
 
  164    template <
typename T, 
typename... INDEXES>
 
  173        virtual ~_IRep () = 
default;
 
  176        virtual shared_ptr<_IRep> CloneEmpty () 
const                                     = 0;
 
  177        virtual T                 GetAt (INDEXES... indexes) 
const                        = 0;
 
 
  183    template <
typename T, 
typename... INDEXES>
 
  184    template <
typename ELEMENT_EQUALS_COMPARER>
 
  186        constexpr EqualsComparer (
const ELEMENT_EQUALS_COMPARER& elementComparer = {});
 
  188        ELEMENT_EQUALS_COMPARER fElementComparer_;
 
  191    namespace Private_DataHyperRectangle_ {
 
  192        template <
typename T, 
template <
typename, 
typename...> 
class BASE_TEMPLATE>
 
  196            template <
size_t... S>
 
  197            struct Helper_<index_sequence<S...>> {
 
  198                using CombinedType = BASE_TEMPLATE<T, 
decltype (S)...>;
 
  206    template <
typename T, 
size_t N>
 
  208        typename Private_DataHyperRectangle_::template NTemplate<T, DataHyperRectangle>::template Helper_<make_index_sequence<N>>::CombinedType;
 
  218#include "DataHyperRectangle.inl" 
Implementation detail for DataHyperRectangle<T, INDEXES...> implementors.
nonvirtual void SetAt(INDEXES... indexes, Common::ArgByValueType< T > v)
nonvirtual TemporarySliceReference_< REST_OF_INDEXES... > operator[](INDEX i1) const
Iterable<T> is a base class for containers which easily produce an Iterator<T> to traverse them.
T value_type
value_type is an alias for the type iterated over - like vector<T>::value_type
conditional_t<(sizeof(CHECK_T)<=2 *sizeof(void *)) and is_trivially_copyable_v< CHECK_T >, CHECK_T, const CHECK_T & > ArgByValueType
This is an alias for 'T' - but how we want to pass it on stack as formal parameter.
typename Private_DataHyperRectangle_::template NTemplate< T, DataHyperRectangle >::template Helper_< make_index_sequence< N > >::CombinedType DataHyperRectangleN