6#ifndef ACTIVE_CONTAINER_VECTOR
7#define ACTIVE_CONTAINER_VECTOR
9#include "Active/Utility/Cloner.h"
10#include "Active/Utility/Mover.h"
25 template<
class T>
requires utility::Clonable<T>
26 class Vector :
public std::vector<std::unique_ptr<T>> {
32 using base = std::vector<std::unique_ptr<T>>;
53 template<
class Derived>
54 explicit Vector(
const std::initializer_list<Derived>& items) :
base() {
55 for (
const auto& item : items)
81 if (
this != &source) {
94 base::operator=(std::move(source));
111 base::emplace_back(cloneMove(std::move(item)));
113 base::emplace_back(clone(item));
144 return base::emplace(pos, cloneMove(item));
146 return base::emplace(pos, clone(item));
167 auto item = std::move(
const_cast<value_type&
>(*pos));
177 void cloneFrom(
const Vector& source) {
178 base::reserve(source.size());
179 for (
const auto& item : source)
void emplace_back(T &&item)
Definition Vector.h:109
void emplace_back(const T &item)
Definition Vector.h:119
auto emplace(const_iterator pos, value_type &item)
Definition Vector.h:154
auto release(iterator &pos)
Definition Vector.h:160
typename base::size_type size_type
Container size (index) type.
Definition Vector.h:36
virtual ~Vector()=default
auto emplace(const_iterator pos, T &&item)
Definition Vector.h:142
typename base::iterator iterator
Container iterator type.
Definition Vector.h:38
auto operator=(const Vector &source)
Definition Vector.h:80
Vector(const Vector &source)
Definition Vector.h:62
void emplace_back(value_type &item)
Definition Vector.h:129
Vector(size_type toReserve=0)
Definition Vector.h:48
auto insert(const_iterator pos, T *item)
Definition Vector.h:135
void push_back(T *item)
Definition Vector.h:104
std::vector< std::unique_ptr< T > > base
Base container type.
Definition Vector.h:32
typename base::const_iterator const_iterator
Container const iterator type.
Definition Vector.h:40
Vector(Vector &&source)
Definition Vector.h:67
void emplace_back(value_type &&item)
Definition Vector.h:124
auto release(const_iterator pos)
Definition Vector.h:166
typename base::value_type value_type
Stored type.
Definition Vector.h:34
Vector(const std::initializer_list< Derived > &items)
Definition Vector.h:54
Movable concept for classes/functions dependent on cloning with a move.
Definition Mover.h:33