![]() |
Arene Base
Fundamental Utilities For Safety Critical C++
|
inline_deque with plenty of capacity, an element can be inserted via push_front, which causes a size increase inline_deque returns a reference to the emplaced element inline_deque with plenty of capacity, an element can be inserted via push_front and then inspected inline_deque, elements can be inserted via push_front within its capacity, making the size be equal to capacity inline_deque's capacity terminates the application with a precondition violation or wraps, depending on its parameters insert functions are correct insert inserts a copy of the value at the requested position insert inserts the value at the requested position insert can insert a value at the end insert can insert a value at the end insert when a non-wrapping deque is full terminates the application inline_deque has circular or ring-buffer behavior, such that when previously inserted elements via push_front are removed via pop_back, then space in the fixed-capacity storage of the deque is made available for new elements to be inserted inline_deque functionality, inserting elements via push_front observing them with back, verifying that it doesn't remove elements, removing with pop_back, and checking the correct dequeing order (namely, FIFO) is preserved with the operations inline_deque functionality, inserting elements via push_back observing them with front, verifying that it doesn't remove elements, removing with pop_front, and checking the correct dequeing order (namely, FIFO) is preserved with the operations inline_deque's back can also be used to modify the least-recently inserted element inplace inline_deque's front can also be used to modify the least-recently inserted element inplace inline_deque copies it inline_deque copies it inline_deque is empty, pop_back terminates the application with a precondition violation inline_deque can be used at compile-time, asserting properties statically inline_deque can be constructed from a range of T using iterators inline_deque can be constructed from an initializer list of T inline_deque can be constructed from an empty initializer list inline_deque crashes when copy constructed from a random-access range in the wrong order try_construct returns empty when copy constructing from a random-access range in the wrong order inline_deque crashes when copy constructed from a range that's too large to fit within the capacity try_construct returns empty when copy constructing from a range that's too large to fit within the capacity inline_deque crashes when copy constructed from an initializer list that's too large to fit in the capacity try_construct returns empty when constructing from an initializer list that's too large for the capacity inline_deque copy-construction works as expected inline_deque copy-construction works as expected when invoked via try_construct inline_deque copy-assignment works as expected inline_deque self copy-assignment does nothing pop_front() only invalidates iterators and references to the first element pop_back() only invalidates iterators and references to the last element and end() push_back twice to add two items to a default-constructed inline_vector, the size is incremented to 2, and the second item can be retrieved via the back member function push_back of an lvalue is noexcept if and only if the value type can be constructed without throwing from an lvalue at member function returns the corresponding value stored when invoked with an index of 0 or 1 on an inline_vector into which two elements have been stored via push_back at member function returns the corresponding value stored when invoked via a const reference to a vector with an index of 0 or 1 on an inline_vector into which two elements have been stored via push_back. constexpr context, an inline_vector can be default-constructed, and a new value inserted via push_back, such that the size of the container is now 1, and the value can be retrieved via at(0) inline_vector can be constructed from a std::initializer_list without throwing exceptions, and the size and values stored in the vector are the same as the size and values of the initializer list. inline_vector can be constructed from a std::initializer_list in a constexpr context, and the elements are those from the initializer list constexpr inline_vector constructed by pushing back values, back can be used in a constexpr context to retrieve the last value in the vector, which must therefore equal the last value pushed back inline_vector by pushing back values in a constexpr context, the front member function can be used in a constexpr context to retrieve the first value, which must be equal to the first value of the pushed back inline_vector using a ranged-for loop in a constexpr context. inline_vector using a ranged-for loop in a constexpr context. inline_vector, invoking erase with an iterator referring to an element that is neither the first or last element removes that element, moves the following elements to one lower index, reduces the size by one, and returns an iterator to the element that replaced the erased element. constexpr context, given a non-empty inline_vector, invoking erase with an iterator referring to an element that is neither the first or last element removes that element, moves the following elements to one lower index, reduces the size by one. external_vector constructor with a count larger than the capacity terminates the program with a precondition violation erase with an iterator range referring to elements in the same inline_vector, removes those elements, moves the following elements to take their place, and returns an iterator with the same offset from the beginning of the vector as the first erased element inline_vector with a count and a value creates the specified number of elements copy-constructed from the supplied value, and sets the size of the vector to that count. inline_vector copy constructor copies the stored elements and size from the original vector. resize is noexcept if and only if the default constructor of the element type is noexcept inline_vector copy-assignment operator uses copy assignment for elements from the source where there is already a corresponding element in the destination, and copy construction for elements that do not have a corresponding element in the destination inline_vector copy-assignment operator destroys the excess elements in the destination when the source vector has fewer elements than the destination vector constexpr context, pop_back removes the last element of a non-empty vector inline_vector with existing elements, and the iterator returned from end, insert can add an element to the end of the vector, increasing the size by one inline_vector with existing elements, and an iterator to an existing element in the vector, insert can add an element at the iterator position, increasing the vector size by one. The existing element at the location referenced by the iterator, and the subsequent elements, are moved to make room for the new element. insert on an inline_vector with size equal to the capacity terminates the program with a precondition violation inline_vector constructor with a count larger than the capacity terminates the program with a precondition violation inline_vector constructor with a count and value where the count is larger than the capacity terminates the program with a precondition violation inline_vector constructor with an initializer list with more elements than the capacity terminates the program with a precondition violation resize with a count of zero on an inline_vector with a capacity of zero does nothing constexpr context, invoking resize with a count of zero on an inline_vector with a non-zero capacity and size sets the size to zero constexpr context, invoking resize with a non-zero count on an inline_vector with a non-zero capacity and different size sets the size to the specified size resize is noexcept if and only if the default constructor of the element type is noexcept resize with a value to copy is noexcept if and only if the copy constructor of the element type is noexcept resize member function with a size and a value on a vector with more elements than the specified size sets the size of the vector to the specified count and does not construct new elements resize member function with a size and a value on a vector with fewer elements than the specified size sets the size of the vector to the specified count, and constructs a number of new elements equal to the difference between the specified size and the previous size by copy-construction from the specified value constexpr context, invoking the inline_vector constructor with a count and a value constructs a vector holding the specified number of elements copied from the source value constexpr context, invoking insert with an iterator referring to an existing element, moves the referred to element and subsequent elements to make room for the new element, inserts the new element, and increases the size by one. external_vector can be compared for ordering using operator< and operator>. One vector compares less than another if the first has a smaller size than the second, and all elements are equal to the corresponding element in the second vector with the same index or they have the same size, and there is an element such that all elements with a lower index compare equal to the corresponding element in the second vector, and that element compares less than the corresponding element of the second vector. constexpr context, an inline_vector can be constructed from an iterator range, creating a vector holding copies of the elements from the source range, with a size equal to the number of elements in the source range inline_vector holding existing elements, assigning to that vector with an initializer list holding more elements copy assigns over the existing elements, and then copy-constructs new elements to increase the size of the vector to that of the initializer list inline_vector holding existing elements, assigning to that vector with an initializer list holding fewer elements copy assigns over the existing elements up to the size of the initializer list, and then destroys a number of elements equal to the difference between the old size of the vector and the size of the initializer list emplace_back and emplace functions before checking their exception specifications, which fails for types that are not default-constructible. assign member function with an initializer list sets the vector to have a size equal to the number of elements in the initializer list, and each element to be a copy of the corresponding element in the initializer list inline_vector from an input iterator range is noexcept if operations on the iterator are noexcept and the element type of the vector is nothrow-constructible from the value type of the iterator assign member function with a count and a value sets the size of the vector to the specified count, where each element is a copy of the supplied value assign member function taking a size and a value is not noexcept if the value type is not nothrow-copy-constructible assign member function with a count and a value where the count is larger than the capacity of the vector terminates the program with a precondition violation inline_vector with multiple elements, the index operator can be used with appropriate index values to access each element, returning a reference to the element at that index inline_vector in a constexpr context. constexpr context, given an inline_vector which is not empty, invoking the clear method makes the vector empty inline_vector can be compared for equality using operator== and operator!=. Two vectors are the same if and only if they have the same size, and each element from one vector compares equal to the element with the same index in the other vector. try_construct can be used to construct an external_vector with a specified number of elements try_construct can be used to attempt to construct an external_vector with a specified number of elements that exceeds the capacity of the vector, in which case the result is an empty optional. inline_vector can be compared for ordering using operator< and operator>. One vector compares less than another if the first has a smaller size than the second, and all elements are equal to the corresponding element in the second vector with the same index or they have the same size, and there is an element such that all elements with a lower index compare equal to the corresponding element in the second vector, and that element compares less than the corresponding element of the second vector. constexpr context, the emplace_back member function can be used to add an element to an inline_vector. The new element is constructed with the arguments supplied to emplace_back try_construct function of external_vector that takes a number of elements is not noexcept if the default constructor of the stored element type is not noexcept external_vector that takes a number of elements is not noexcept if the default constructor of the stored element type is not noexcept emplace_back is noexcept if and only if the element type of the vector is nothrow-constructible from the supplied arguments external_vector when invoking the constructor terminates the program with a precondition violation emplace can be invoked in a constexpr context to construct an element at a specified index. emplace with a position is noexcept if and only if the element type of the vector is nothrow-move-constructible, nothrow-move-assignable, and nothrow-constructible from an lvalue argument emplace_back and emplace functions before checking their exception specifications, which fails for types that are not default-constructible. constexpr context, two inline_vector instances can be swapped with an unqualified call to swap. insert of an lvalue is noexcept if the element type of the vector is nothrow-constructible from the supplied value, and is nothrow-move-constructible and nothrow-move-assignable insert is noexcept if the element type of the vector is nothrow-copy-constructible, and is nothrow-move-constructible and nothrow-move-assignable insert with a count and a value to insert more elements than there are remaining spaces in the vector before it exceeds capacity terminates the program with a precondition violation. insert with the end iterator of the inline_vector and a count and value appends the specified number of copies of the supplied value to the end of the vector. insert with an iterator referring to an existing element of an inline_vector and a count and value moves the referred to element and subsequent elements to make room, and inserts the specified number of copies of the supplied value prior to the existing element. insert with an iterator referring to an existing element of an inline_vector and a source iterator range denoted by a pair of iterators moves the referred to element and subsequent elements to make room, and inserts the elements from the source iterator range prior to the existing element. insert is noexcept if the element type of the vector is nothrow-constructible from the supplied iterator's reference type, and is nothrow-move-constructible and nothrow-move-assignable inline_vector can be constructed from an inline_vector with a larger capacity, provided the number of elements in the source vector is less than the capacity of the target vector inline_vector can be assigned from an inline_vector with a larger capacity, provided the number of elements in the source vector is less than the capacity of the target vector try_construct can be used to construct an inline_vector with a specified number of elements try_construct can be used to attempt to construct an inline_vector with a specified number of elements that exceeds the capacity of the vector, in which case the result is an empty optional. try_construct function of inline_vector that takes a number of elements is not noexcept if the default constructor of the stored element type is not noexcept inline_vector that takes a number of elements is not noexcept if the default constructor of the stored element type is not noexcept inline_vector when invoking the constructor terminates the program with a precondition violation try_construct with an initializer list constructs an inline_vector holding copies of the elements from the initializer list try_construct with an initializer list holding more elements than the capacity of the inline_vector returns an empty optional try_construct with an existing inline_vector returns a copy of that source vector inline_vector with an existing inline_vector copies the elements from the source vector try_construct with an existing inline_vector with a smaller capacity returns an inline_vector with the same elements as the source vector inline_vector from an existing inline_vector with a smaller capacity returns an inline_vector with the same elements as the source vector try_construct with an existing inline_vector with a larger capacity but a size that is less than or equal to the capacity of the destination type returns an inline_vector with the same elements as the source vector try_construct with an existing inline_vector with a larger capacity and a size that is larger than the capacity of the destination type returns an empty optional inline_vector from an existing inline_vector with a larger capacity but a size that is less than or equal to the capacity of the destination type copies elements from the source vector try_construct from an iterator range is noexcept if the element type of the vector is nothrow-constructible from the iterator's reference type try_construct from an input iterator range is noexcept if the element type of the vector is nothrow-constructible from the iterator's reference type external_vector is empty external_vector is equal to the supplied template parameter capacity member function of external_vector is declared noexcept external_vector is zero data returns a null pointer external_vector initialized from a list of values is correct size member function of external_vector is declared noexcept push_back to add an item to a default-constructed external_vector increases the size push_back to add an item to a default-constructed external_vector, that item can be retrieved via the back member function push_back to add an item to a default-constructed external_vector, the vector is no longer empty push_back twice to add two items to a default-constructed external_vector, the size is incremented to 2, and the second item can be retrieved via the back member function push_back is noexcept if and only if the value type can be constructed without throwing external_vector is empty external_vector constructed with just storage is empty empty member function of external_vector is noexcept at member function throws a std::out_of_range exception when invoked with an index of 0 on a default-constructed external_vector at member function returns the value stored when invoked with an index of 0 on a external_vector into which one element has been stored via push_back at member function on a non-const external_vector is a non-const reference to value_type at member function on a const external_vector is a const reference to value_type at member function returns the corresponding value stored when invoked with an index of 0 or 1 on an external_vector into which two elements have been stored via push_back at member function throws when invoked with an index that is equal to or larger than the size of the vector on an external_vector into which two elements have been stored via push_back at member function returns the corresponding value stored when invoked via a const reference to a vector with an index of 0 or 1 on an external_vector into which two elements have been stored via push_back. at member function throws when invoked via a const reference to a vector with an index that is equal to or larger than the size of an external_vector into which two elements have been stored via push_back max_size member function of external_vector returns the capacity of the storage push_back on a vector that is at capacity terminates the program with a precondition violation. size member function, and via comparing the iterators returned from begin and end push_back on a zero-capacity vector terminates the program with a precondition violation inline_vector is empty inline_vector is equal to the supplied template parameter external_vector, after one element has been added via push_back, back returns a reference to that element. After a second element has been added via push_back, back now returns a reference to the second element. capacity member function of inline_vector is declared noexcept inline_vector is zero external_vector, after one element has been added via push_back, back called via a const reference to the vector returns a const reference to that element. After a second element has been added via push_back, back called via a const reference to the vector now returns a const reference to the second element. inline_vector initialized from a list of values is correct in a constexpr context back cannot throw size member function of inline_vector is declared noexcept push_back to add an item to a default-constructed inline_vector increases the size external_vector can be constructed from a std::initializer_list without throwing exceptions, and the size and values stored in the vector are the same as the size and values of the initializer list. push_back to add an item to a default-constructed inline_vector, that item can be retrieved via the back member function external_vector initialized from an initializer list, the front member function can be used to retrieve the first value, which must be equal to the first value of the vector as retrieved via at(0) push_back to add an item to a default-constructed inline_vector, the vector is no longer empty begin and end member functions of an external_vector must return an iterator, and they must be equal for a default-constructed vector push_back of an rvalue is noexcept if and only if the value type can be constructed without throwing from an rvalue external_vector constructed from an initializer list, the iterators returned from begin and end can be passed as an iterator pair to std::mismatch to compare the values in the vector to those in the initializer list, and the return value of the call to std::mismatch must be the end iterators of the vector and initializer list, to indicate that the values are the same. const external_vector constructed from an initializer list, the iterators returned from begin and end can be passed as an iterator pair to std::mismatch to compare the values in the vector to those in the initializer list, and the return value of the call to std::mismatch must be the end iterators of the vector and initializer list, to indicate that the values are the same. inline_vector is empty in a constexpr context empty member function of inline_vector is noexcept at member function throws a std::out_of_range exception when invoked with an index of 0 on a default-constructed inline_vector at member function returns the value stored when invoked with an index of 0 on a inline_vector into which one element has been stored via push_back at member function on a non-const inline_vector is a non-const reference to value_type at member function on a const inline_vector is a const reference to value_type at member function throws when invoked with an index that is equal to or larger than the size of the vector on an inline_vector into which two elements have been stored via push_back at member function throws when invoked via a const reference to a vector with an index that is equal to or larger than the size of an inline_vector into which two elements have been stored via push_back max_size member function of inline_vector returns the capacity specified as a template parameter. iterator type of an external_vector must have the required type aliases for a random-access iterator. push_back on a vector that is at capacity terminates the program with a precondition violation. size member function, and via comparing the iterators returned from begin and end external_vector must have the required type aliases for a sequence container push_back on a zero-capacity vector terminates the program with a precondition violation inline_vector, after one element has been added via push_back, back returns a reference to that element. After a second element has been added via push_back, back now returns a reference to the second element. inline_vector, after one element has been added via push_back, back called via a const reference to the vector returns a const reference to that element. After a second element has been added via push_back, back called via a const reference to the vector now returns a const reference to the second element. external_vector, invoking erase with the iterator returned from begin removes the first element, moving the remaining elements to one lower index and decreasing the size by one, and returns an iterator to the new first element. back cannot throw external_vector, invoking erase with an iterator referring to an element that is neither the first or last element removes that element, moves the following elements to one lower index, reduces the size by one, and returns an iterator to the element that replaced the erased element. erase with an iterator range referring to elements in the same external_vector, removes those elements, moves the following elements to take their place, and returns an iterator with the same offset from the beginning of the vector as the first erased element external_vector with a count and a value creates the specified number of elements copy-constructed from the supplied value, and sets the size of the vector to that count. external_vector copy constructor copies the stored elements and size from the original vector. inline_vector initialized by pushing back values, the front member function can be used to retrieve the first value, which must be equal to the first value of the vector as retrieved via at(0) external_vector move constructor moves the stored elements from the original vector external_vector move constructor with new storage moves the stored elements from the original vector external_vector copy-assignment operator uses copy assignment for elements from the source where there is already a corresponding element in the destination, and copy construction for elements that do not have a corresponding element in the destination begin and end member functions of an inline_vector must return an iterator, and they must be equal for a default-constructed vector external_vector copy-assignment operator destroys the excess elements in the destination when the source vector has fewer elements than the destination vector inline_vector constructed by pushing back values, the iterators returned from begin and end can be passed as an iterator pair to arene::base::equal to compare the values in the vector to those in the initializer list, which must return true, to indicate that the values are the same. external_vector is noexcept if and only if the stored element type is both nothrow-copy-constructible and nothrow-copy-assignable const inline_vector constructed by pushing back values, the iterators returned from begin and end can be passed as an iterator pair to arene::base::equal to compare the values in the vector to those in the initializer list, which must return true, to indicate that the values are the same. iterator type of an inline_vector must have the required type aliases for a random-access iterator. external_vector move-assignment operator uses move assignment for elements from the source where there is already a corresponding element in the destination, and move construction for elements that do not have a corresponding element in the destination inline_vector must have the required type aliases for a sequence container external_vector move-assignment operator destroys the excess elements in the destination when the source vector has fewer elements than the destination vector external_vector is noexcept if and only if the value type is nothrow-move-constructible and nothrow-move-assignable pop_back on a non-empty external_vector destroys the last element and reduces the size by one. pop_back is declared noexcept erase is noexcept if and only if the element type has noexcept move operations inline_vector, invoking erase with the iterator returned from begin removes the first element, moving the remaining elements to one lower index and decreasing the size by one, and returns an iterator to the new first element. external_vector, and the iterator returned from begin, insert can add an element to the vector, setting the size to one. external_vector with existing elements, and the iterator returned from end, insert can add an element to the end of the vector, increasing the size by one external_vector with existing elements, and an iterator to an existing element in the vector, insert can add an element at the iterator position, increasing the vector size by one. The existing element at the location referenced by the iterator, and the subsequent elements, are moved to make room for the new element. insert on an external_vector with size equal to the capacity terminates the program with a precondition violation external_vector constructor with a count and value where the count is larger than the capacity terminates the program with a precondition violation external_vector constructor with an initializer list with more elements than the capacity terminates the program with a precondition violation inline_vector move constructor moves the stored elements from the original vector resize with a value to copy is noexcept if and only if the copy constructor of the element type is noexcept resize member function with a size and a value on a vector with more elements than the specified size sets the size of the vector to the specified count and does not construct new elements resize member function with a size and a value on a vector with fewer elements than the specified size sets the size of the vector to the specified count, and constructs a number of new elements equal to the difference between the specified size and the previous size by copy-construction from the specified value inline_vector is noexcept if and only if the stored element type is both nothrow-copy-constructible and nothrow-copy-assignable external_vector can be constructed from an iterator range, creating a vector holding copies of the elements from the source range, with a size equal to the number of elements in the source range inline_vector move-assignment operator uses move assignment for elements from the source where there is already a corresponding element in the destination, and move construction for elements that do not have a corresponding element in the destination external_vector from an iterator range is noexcept if operations on the iterator are noexcept and the element type of the vector is nothrow-constructible from the reference type of the iterator inline_vector move-assignment operator destroys the excess elements in the destination when the source vector has fewer elements than the destination vector external_vector from an input iterator range is noexcept if operations on the iterator are noexcept and the element type of the vector is nothrow-constructible from the reference type of the iterator inline_vector is noexcept if and only if the value type is nothrow-move-constructible and nothrow-move-assignable external_vector holding existing elements, assigning to that vector with an initializer list holding more elements copy assigns over the existing elements, and then copy-constructs new elements to increase the size of the vector to that of the initializer list pop_back on a non-empty inline_vector destroys the last element and reduces the size by one. pop_back is declared noexcept external_vector holding existing elements, assigning to that vector with an initializer list holding fewer elements copy assigns over the existing elements up to the size of the initializer list, and then destroys a number of elements equal to the difference between the old size of the vector and the size of the initializer list erase is noexcept if and only if the element type has noexcept move assignment assign member function with an iterator range sets the vector to have a size equal to the number of elements in the range, and each element to be a copy of the corresponding element in the range inline_vector, and the iterator returned from begin, insert can add an element to the vector, setting the size to one. external_vector from an iterator range is noexcept if operations on the iterator are noexcept and the element type of the vector is nothrow-constructible from the reference type of the iterator assign member function with an initializer list sets the vector to have a size equal to the number of elements in the initializer list, and each element to be a copy of the corresponding element in the initializer list external_vector from an initializer list is noexcept if the element type of the vector is nothrow-copy-constructible assign member function with an iterator range specified using input iterators sets the vector to have a size equal to the number of elements in the range, and each element to be a copy of the corresponding element in the range external_vector from an input iterator range is noexcept if operations on the iterator are noexcept and the element type of the vector is nothrow-constructible from the value type of the iterator assign member function with a count and a value sets the size of the vector to the specified count, where each element is a copy of the supplied value assign member function taking a size and a value is not noexcept if the value type is not nothrow-copy-constructible assign member function with a count and a value where the count is larger than the capacity of the vector terminates the program with a precondition violation const vector returns a const reference to the element type of the vector external_vector with multiple elements, the index operator can be used with appropriate index values to access each element, and the returned reference is the same as that returned by at given the same index noexcept noexcept for a const vector data member function is noexcept and returns a pointer to the first element of a non-empty vector external_vector which is not empty, invoking the clear method makes the vector empty inline_vector can be constructed from an iterator range, creating a vector by moving the elements from the source range, with a size equal to the number of elements in the source range inline_vector from an iterator range is noexcept if operations on the iterator are noexcept and the element type of the vector is nothrow-constructible from the reference type of the iterator inline_vector from an input iterator range is noexcept if operations on the iterator are noexcept and the element type of the vector is nothrow-constructible from the reference type of the iterator emplace_back member function can be used to add an element to an external_vector. The new element is constructed with the arguments supplied to emplace_back emplace_back is noexcept if and only if the element type of the vector is nothrow-constructible from the supplied arguments emplace with a position is noexcept if and only if the element type of the vector is nothrow-move-constructible, nothrow-move-assignable, and nothrow-constructible from the supplied arguments assign member function with an iterator range sets the vector to have a size equal to the number of elements in the range, and each element to be a copy of the corresponding element in the range inline_vector from an iterator range is noexcept if operations on the iterator are noexcept and the element type of the vector is nothrow-constructible and nothrow-assignable from the reference type of the iterator emplace_back on an external_vector<T> which has a size equal to its capacity terminates the program with a precondition violation swap without a namespace qualification on two external_vector instances exchanges the contents, so the elements from one have been moved to the other, and vice-versa. inline_vector from an initializer list is noexcept if the element type of the vector is nothrow-copy-constructible external_vectors is noexcept if and only if the element type is nothrow swappable assign member function with an iterator range specified using input iterators sets the vector to have a size equal to the number of elements in the range, and each element to be a copy of the corresponding element in the range insert is noexcept if the element type of the vector is nothrow-constructible from the supplied value, and is nothrow-move-constructible and nothrow-move-assignable insert is noexcept if the element type of the vector is nothrow-copy-constructible, and is nothrow-move-constructible and nothrow-move-assignable emplace inserts a new value at the position indicated, constructing the new value with the supplied arguments, and returning an iterator referencing the new value insert with a count and a value to insert more elements than there are remaining spaces in the vector before it exceeds capacity terminates the program with a precondition violation. insert with the end iterator of the external_vector and a count and value appends the specified number of copies of the supplied value to the end of the vector. insert with an iterator referring to an existing element of an external_vector and a count and value moves the referred to element and subsequent elements to make room, and inserts the specified number of copies of the supplied value prior to the existing element. const vector returns a const reference to the element type of the vector insert with an iterator referring to an existing element of an external_vector and a source iterator range denoted by a pair of iterators moves the referred to element and subsequent elements to make room, and inserts the elements from the source iterator range prior to the existing element. noexcept insert is noexcept if the element type of the vector is nothrow-constructible from the supplied iterator's reference type, and is nothrow-move-constructible and nothrow-move-assignable noexcept for a const vector cbegin and cend return const_iterators to the corresponding locations of the external_vector. data member function is noexcept and returns a pointer to the first element of a non-empty vector inline_vector which is not empty, invoking the clear method makes the vector empty rbegin, rend, crbegin and crend return reverse iterators to the appropriate locations in the external_vector, such that iteration forwards from rbegin or crbegin iterates through the elements of the external_vector in reverse order. external_vector can be assigned from an external_vector with a larger capacity, provided the number of elements in the source vector is less than the capacity of the target vector try_construct can be used to construct an empty external_vector. try_construct with a number of elements is not considered for overload resolution if the element type of the external_vector<T> is not default-constructible. external_vector constructor with a number of elements is not considered for overload resolution if the element type of the external_vector<T> is not default-constructible. emplace_back member function can be used to add an element to an inline_vector. The new element is constructed with the arguments supplied to emplace_back try_construct function of external_vector<T> is always noexcept, even if the stored element type's default constructor can throw try_construct function of external_vector<T> is always noexcept, even if the stored element type's default constructor can throw emplace_back is noexcept if and only if the element type of the vector is nothrow-constructible from the supplied arguments emplace with a position is noexcept if and only if the element type of the vector is nothrow-move-constructible, nothrow-move-assignable, and nothrow-constructible from the supplied arguments try_construct that takes a size and source value is not considered for overload resolution if the element type of the external_vector<T> is not copy-constructible. try_construct with an initializer list constructs an external_vector holding copies of the elements from the initializer list emplace inserts a new value at the position indicated, constructing the new value with the supplied arguments, and returning an iterator referencing the new value try_construct with an initializer list holding more elements than the capacity of the external_vector returns an empty optional try_construct with an existing external_vector returns a copy of that source vector external_vector with an existing external_vector copies the elements from the source vector try_construct with an existing external_vector with a smaller capacity returns an external_vector with the same elements as the source vector external_vector from an existing external_vector with a smaller capacity returns an external_vector with the same elements as the source vector try_construct with an existing external_vector with a larger capacity but a size that is less than or equal to the capacity of the destination type returns an external_vector with the same elements as the source vector emplace_back on an inline_vector<T> which has a size equal to its capacity terminates the program with a precondition violation try_construct with an existing external_vector with a larger capacity and a size that is larger than the capacity of the destination type returns an empty optional swap without a namespace qualification on two inline_vector instances exchanges the contents, so the elements from one have been moved to the other, and vice-versa. external_vector from an existing external_vector with a larger capacity but a size that is less than or equal to the capacity of the destination type copies elements from the source vector external_vector is not copy-constructible inline_vectors is noexcept if and only if the element type is nothrow swappable AND the element type is nothrow move constructible external_vector is constructible with storage and an old vector if and only if the data type is copy-constructible insert of an rvalue is noexcept if the element type of the vector is nothrow-constructible from the supplied value, and is nothrow-move-constructible and nothrow-move-assignable try_construct with an rvalue external_vector constructs a new external_vector, and move-constructs the elements from the source to the new vector. external_vector from an rvalue external_vector move-constructs the elements from the source to the new vector. try_construct with an rvalue external_vector with a larger capacity and a size that is larger than the capacity of the destination storage returns an empty optional external_vector is not move constructible if the element type is not move constructible try_construct with an iterator range returns an external_vector with the same elements as the source range try_construct from an iterator range is noexcept if the element type of the vector is nothrow-constructible from the iterator's reference type try_construct from an input iterator range is noexcept if the element type of the vector is nothrow-constructible from the iterator's reference type external_vector iterator terminates the program with a precondition violation external_vector iterator terminates the program with a precondition violation cbegin and cend return const_iterators to the corresponding locations of the inline_vector. rbegin, rend, crbegin and crend return reverse iterators to the appropriate locations in the inline_vector, such that iteration forwards from rbegin or crbegin iterates through the elements of the inline_vector in reverse order. try_construct can be used to construct an empty inline_vector. try_construct with a number of elements is not considered for overload resolution if the element type of the inline_vector<T> is not default-constructible. inline_vector constructor with a number of elements is not considered for overload resolution if the element type of the inline_vector<T> is not default-constructible. try_construct function of inline_vector<T> is always noexcept, even if the stored element type's default constructor can throw try_construct that takes a size and source value is not considered for overload resolution if the element type of the inline_vector<T> is not copy-constructible. try_construct that takes an initializer list is not considered for overload resolution if the element type of the inline_vector is not copy-constructible. inline_vector is not copy-constructible if the data type is not copy-constructible try_construct with an rvalue inline_vector constructs a new inline_vector, and move-constructs the elements from the source to the new vector. inline_vector from an rvalue inline_vector move-constructs the elements from the source to the new vector. try_construct with an rvalue inline_vector with a larger capacity and a size that is larger than the capacity of the destination type returns an empty optional inline_vector is not move constructible if the element type is not move constructible try_construct with an iterator range returns an inline_vector with the same elements as the source range inline_vector iterator terminates the program with a precondition violation inline_vector iterator terminates the program with a precondition violation inline_deque has size equal to zero inline_deque is equal to the supplied template parameter capacity member function of inline_deque is declared noexcept size member function of inline_deque is declared noexcept inline_deque with plenty of capacity, an element can be inserted via push_back, which causes a size increase inline_deque returns a reference to the emplaced element inline_deque with plenty of capacity, an element can be inserted via push_back and then inspected inline_deque, elements can be inserted via push_back within its capacity, making the size be equal to capacity inline_deque's capacity terminates the application with a precondition violation or wraps, depending on its parameters inline_deque has circular or ring-buffer behavior, such that when previously inserted elements via push_back are removed via pop_front, then space in the fixed-capacity storage of the deque is made available for new elements to be inserted inline_deque is empty, back terminates the application with a precondition violation inline_deque is empty, the const overload of back terminates the application with a precondition violation inline_deque is empty, pop_front terminates the application with a precondition violation inline_deque is empty, front terminates the application with a precondition violation inline_deque is empty, the const overload of front terminates the application with a precondition violation inline_deque is not copy-constructible if the data type is not copy-constructible inline_deque is not move-constructible if the data type is not move-constructible inline_deque is not copy-assignable if the data type is not copy-constructible inline_deque is not move-assignable if the data type is not move-constructible inline_deque range construction is enabled or disabled appropriately based on the arguments inline_deque range construction has the correct noexcept specification inline_deque can be constructed from a range of T using iterators inline_deque initializer list construction is enabled or disabled appropriately based on the value type inline_deque initializer list construction has the correct noexcept specification inline_deque crashes when move constructed from a range with the iterators in the wrong order try_construct returns empty when move constructing from a range with the iterators in the wrong order inline_deque crashes when move constructed from a range that's too large to fit within the capacity try_construct returns empty when move constructing from a range that's too large to fit within the capacity inline_deque move-construction works as expected inline_deque move-construction works as expected when invoked via try_construct inline_deque move-assignment works as expected inline_deque self move-assignment does nothing operator+ on an iterator gives the same result as using operator+= on a copy of it operator- on an iterator and a difference gives the same result as using operator-= on them operator[] on an iterator gives the same result as using binary operator+ and unary operator* operator[] on the deque gives the same result as using operator[] on begin() operator- between any two iterators returns the distance between them