5#include "Stroika/Foundation/Common/Concepts.h"
6#include "Stroika/Foundation/Containers/Private/IterableUtils.h"
16 template <
typename T,
typename... INDEXES>
20 _AssertRepValidType ();
22 template <
typename T,
typename... INDEXES>
24 : inherited{move (src)}
26 _AssertRepValidType ();
28 template <
typename T,
typename... INDEXES>
33 _AssertRepValidType ();
35 template <
typename T,
typename... INDEXES>
39 _AssertRepValidType ();
41 template <
typename T,
typename... INDEXES>
42 inline T DataHyperRectangle<T, INDEXES...>::GetAt (INDEXES... indexes)
const
44 return _SafeReadRepAccessor<_IRep>{
this}._ConstGetRep ().GetAt (forward<INDEXES> (indexes)...);
46 template <
typename T,
typename... INDEXES>
49 _SafeReadWriteRepAccessor<_IRep>{
this}._GetWriteableRep ().SetAt (forward<INDEXES> (indexes)..., v);
51 template <
typename T,
typename... INDEXES>
55 _SafeReadRepAccessor<_IRep>{
this};
58 template <
typename T,
typename... INDEXES>
59 constexpr bool DataHyperRectangle<T, INDEXES...>::operator== (
const DataHyperRectangle& rhs)
const
60 requires (equality_comparable<T>)
62 return EqualsComparer<>{}(*
this, rhs);
70 template <
typename T,
typename... INDEXES>
71 template <
typename ELEMENT_EQUALS_COMPARER>
72 constexpr DataHyperRectangle<T, INDEXES...>::EqualsComparer<ELEMENT_EQUALS_COMPARER>::EqualsComparer (
const ELEMENT_EQUALS_COMPARER& elementComparer)
73 : fElementComparer_{elementComparer}
76 template <
typename T,
typename... INDEXES>
77 template <
typename ELEMENT_EQUALS_COMPARER>
78 inline bool DataHyperRectangle<T, INDEXES...>::EqualsComparer<ELEMENT_EQUALS_COMPARER>::operator() (
const DataHyperRectangle& lhs,
79 const DataHyperRectangle& rhs)
const
81 return lhs.SequenceEquals (rhs, fElementComparer_);
#define qStroika_Foundation_Debug_AssertionsChecked
The qStroika_Foundation_Debug_AssertionsChecked flag determines if assertions are checked and validat...
#define RequireNotNull(p)
#define RequireExpression(c)
nonvirtual void SetAt(INDEXES... indexes, Common::ArgByValueType< T > v)
DataHyperRectangle(const DataHyperRectangle< T, INDEXES... > &src) noexcept
Iterable<T> is a base class for containers which easily produce an Iterator<T> to traverse them.
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.