template<typename T, bool = (std::is_trivially_copy_constructible<T>::value)&& (std::is_trivially_move_constructible<T>::value)&& std::is_trivially_destructible<T>::value>
Death::Containers::SmallVectorTemplateBase class

SmallVector method implementations that are designed to work with non-trivial types

Base classes

template<typename T>
class SmallVectorTemplateCommon<T>
SmallVector part which does not depend on whether the type is a POD

Derived classes

template<typename T>
class SmallVectorImpl
Consists of common code of SmallVector class to reduce code duplication based on N template parameter.

Constructors, destructors, conversion operators

SmallVectorTemplateBase(std::size_t size) protected

Public functions

void push_back(const T& elt)
void push_back(T&& elt)
void pop_back()

Protected types

using ValueParamT = const T&

Protected static functions

static void destroy_range(T* s, T* e)
template<typename It1, typename It2>
static void uninitialized_move(It1 i, It1 e, It2 dest)
Moves the range [I, E) into the uninitialized memory starting with Dest, constructing elements as needed.
template<typename It1, typename It2>
static void uninitialized_copy(It1 i, It1 e, It2 dest)
Copies the range [I, E) onto the uninitialized memory starting with Dest, constructing elements as needed.
static auto forward_value_param(T&& v) -> T&&
static auto forward_value_param(const T& v) -> const T&

Protected functions

void grow(std::size_t minSize = 0)
Grows the allocated memory (without initializing new elements), doubling the size of the allocated memory.
auto mallocForGrow(std::size_t minSize, std::size_t& newCapacity) -> T*
Creates a new allocation big enough for MinSize and pass back its size in NewCapacity.
void moveElementsForGrow(T* newElts)
Move existing elements over to the new allocation NewElts.
void takeAllocationForGrow(T* newElts, std::size_t newCapacity)
Transfers ownership of the allocation.
auto reserveForParamAndGetAddress(const T& elt, std::size_t n = 1) -> const T*
auto reserveForParamAndGetAddress(T& elt, std::size_t n = 1) -> T*
Reserves enough space to add one element, and returns the updated element pointer in case it was a reference to the storage.
void growAndAssign(std::size_t numElts, const T& elt)
template<typename ... ArgTypes>
auto growAndEmplaceBack(ArgTypes && ... args) -> T&

Protected static variables

static bool TakesParamByValue constexpr