6#ifndef ACTIVE_CONTAINER_LIST
7#define ACTIVE_CONTAINER_LIST
9#include "Active/Utility/Cloner.h"
10#include "Active/Utility/Mover.h"
26 template<
class T>
requires utility::Clonable<T>
27 class List :
public std::list<std::unique_ptr<T>> {
35 using base = std::list<value_t>;
53 template<
class Derived>
54 explicit List(
const std::initializer_list<Derived>& items) :
base() {
55 for (
const auto& item : items)
81 if (
this != &source) {
94 base::operator=(std::move(source));
109 void push_back(T& item) { base::push_back(clone(item)); }
116 base::emplace_back(cloneMove(std::move(item)));
118 base::emplace_back(clone(item));
146 base::emplace_front(cloneMove(std::move(item)));
148 base::emplace_front(clone(item));
161 auto item = std::move(*pos);
162 pos = this->erase(pos);
171 void cloneFrom(
const List& source) {
172 for (
const auto& item : source)
std::unique_ptr< T > value_t
Stored type.
Definition List.h:33
typename base::const_iterator const_iterator
Container const iterator type.
Definition List.h:41
List(const List &source)
Definition List.h:62
List(const std::initializer_list< Derived > &items)
Definition List.h:54
std::list< value_t > base
Base container type.
Definition List.h:35
void emplace_back(value_t &&item)
Definition List.h:129
List(List &&source)
Definition List.h:67
typename base::size_type size_type
Container size (index) type.
Definition List.h:37
auto release(iterator &pos)
Definition List.h:160
List()
Definition List.h:48
auto operator=(const List &source)
Definition List.h:80
typename base::iterator iterator
Container iterator type.
Definition List.h:39
void emplace_front(value_t &&item)
Definition List.h:154
void emplace_back(const T &item)
Definition List.h:124
void emplace_back(value_t &item)
Definition List.h:134
void emplace_front(T &&item)
Definition List.h:144
void emplace_back(T &&item)
Definition List.h:114
void push_front(T *item)
Definition List.h:139
void push_back(T *item)
Definition List.h:104
void push_back(T &item)
Definition List.h:109
Movable concept for classes/functions dependent on cloning with a move.
Definition Mover.h:33