Inherits TypeOfCriticalSectionToUse.
|  | 
|  | ArrayBase ()=default | 
|  | 
|  | ~ArrayBase () | 
|  | 
|  | ArrayBase (ArrayBase &&other) noexcept | 
|  | 
| ArrayBase & | operator= (ArrayBase &&other) noexcept | 
|  | 
| template<class OtherElementType , class OtherCriticalSection , typename  = AllowConversion<OtherElementType, OtherCriticalSection>> | 
|  | ArrayBase (ArrayBase< OtherElementType, OtherCriticalSection > &&other) noexcept | 
|  | Converting move constructor. 
 | 
|  | 
| template<class OtherElementType , class OtherCriticalSection , typename  = AllowConversion<OtherElementType, OtherCriticalSection>> | 
| ArrayBase & | operator= (ArrayBase< OtherElementType, OtherCriticalSection > &&other) noexcept | 
|  | Converting move assignment operator. 
 | 
|  | 
| template<class OtherArrayType > | 
| bool | operator== (const OtherArrayType &other) const noexcept | 
|  | 
| template<class OtherArrayType > | 
| bool | operator!= (const OtherArrayType &other) const noexcept | 
|  | 
| ElementType & | operator[] (const int index) noexcept | 
|  | 
| const ElementType & | operator[] (const int index) const noexcept | 
|  | 
| ElementType | getValueWithDefault (const int index) const noexcept | 
|  | 
| ElementType | getFirst () const noexcept | 
|  | 
| ElementType | getLast () const noexcept | 
|  | 
| ElementType * | begin () noexcept | 
|  | 
| const ElementType * | begin () const noexcept | 
|  | 
| ElementType * | end () noexcept | 
|  | 
| const ElementType * | end () const noexcept | 
|  | 
| ElementType * | data () noexcept | 
|  | 
| const ElementType * | data () const noexcept | 
|  | 
| int | size () const noexcept | 
|  | 
| int | capacity () const noexcept | 
|  | 
| void | setAllocatedSize (int numElements) | 
|  | 
| void | ensureAllocatedSize (int minNumElements) | 
|  | 
| void | shrinkToNoMoreThan (int maxNumElements) | 
|  | 
| void | clear () | 
|  | 
| void | swapWith (ArrayBase &other) noexcept | 
|  | 
| void | add (const ElementType &newElement) | 
|  | 
| void | add (ElementType &&newElement) | 
|  | 
| template<typename... OtherElements> | 
| void | add (const ElementType &firstNewElement, OtherElements &&... otherElements) | 
|  | 
| template<typename... OtherElements> | 
| void | add (ElementType &&firstNewElement, OtherElements &&... otherElements) | 
|  | 
| template<typename Type > | 
| void | addArray (const Type *elementsToAdd, int numElementsToAdd) | 
|  | 
| template<typename TypeToCreateFrom > | 
| void | addArray (const std::initializer_list< TypeToCreateFrom > &items) | 
|  | 
| template<class OtherArrayType > | 
| void | addArray (const OtherArrayType &arrayToAddFrom) | 
|  | 
| template<class OtherArrayType > | 
| std::enable_if_t<! std::is_pointer_v< OtherArrayType >, int > | addArray (const OtherArrayType &arrayToAddFrom, int startIndex, int numElementsToAdd=-1) | 
|  | 
| void | insert (int indexToInsertAt, ParameterType newElement, int numberOfTimesToInsertIt) | 
|  | 
| void | insertArray (int indexToInsertAt, const ElementType *newElements, int numberOfElements) | 
|  | 
| void | removeElements (int indexToRemoveAt, int numElementsToRemove) | 
|  | 
| void | swap (int index1, int index2) | 
|  | 
| void | move (int currentIndex, int newIndex) noexcept | 
|  | 
template<class ElementType, class TypeOfCriticalSectionToUse>
class ArrayBase< ElementType, TypeOfCriticalSectionToUse >
A basic object container. 
This class isn't really for public use - it's used by the other array classes, but might come in handy for some purposes.
It inherits from a critical section class to allow the arrays to use the "empty base class optimisation" pattern to reduce their footprint.
- See also
- Array, OwnedArray, ReferenceCountedArray 
template<class ElementType , class TypeOfCriticalSectionToUse > 
template<class OtherElementType , class OtherCriticalSection , typename  = AllowConversion<OtherElementType, OtherCriticalSection>> 
 
Converting move constructor. 
Only enabled when the other array has a different type to this one. If you see a compile error here, it's probably because you're attempting a conversion that HeapBlock won't allow. 
 
 
template<class ElementType , class TypeOfCriticalSectionToUse > 
template<class OtherElementType , class OtherCriticalSection , typename  = AllowConversion<OtherElementType, OtherCriticalSection>> 
  
  | 
        
          | ArrayBase & ArrayBase< ElementType, TypeOfCriticalSectionToUse >::operator= | ( | ArrayBase< OtherElementType, OtherCriticalSection > && | other | ) |  |  | noexcept | 
 
Converting move assignment operator. 
Only enabled when the other array has a different type to this one. If you see a compile error here, it's probably because you're attempting a conversion that HeapBlock won't allow.