64 using BufferedIterator_t = std::variant<Deferred_t, Evaluated_t>;
65 BufferedIterator_t m_bufferedIterator =
nullptr;
69 StatefulSnapshotsContainer(
77 Container<Iteration, Iteration::IterationIndex_t>::value_type;
82 ~StatefulSnapshotsContainer()
override;
84 StatefulSnapshotsContainer(StatefulSnapshotsContainer
const &other);
85 StatefulSnapshotsContainer(StatefulSnapshotsContainer &&other)
noexcept(
86 noexcept(Members(std::declval<Members &&>())));
88 StatefulSnapshotsContainer &
89 operator=(StatefulSnapshotsContainer
const &other);
90 StatefulSnapshotsContainer &
91 operator=(StatefulSnapshotsContainer &&other)
noexcept(
noexcept(
92 std::declval<Members>().operator=(std::declval<Members &&>())));
94 using AbstractSnapshotsContainer::currentIteration;
95 auto currentIteration()
const -> std::optional<value_type const *>
override;
96 auto currentIteration() -> std::optional<value_type *>
override;
98 auto begin() -> iterator
override;
99 auto end() -> iterator
override;
100 auto begin()
const -> const_iterator
override;
101 auto end()
const -> const_iterator
override;
102 auto rbegin() -> iterator
override;
103 auto rend() -> iterator
override;
104 auto rbegin()
const -> const_iterator
override;
105 auto rend()
const -> const_iterator
override;
107 auto empty()
const ->
bool override;
108 auto size()
const ->
size_t override;
110 auto at(key_type
const &key)
const -> mapped_type
const &
override;
111 auto at(key_type
const &key) -> mapped_type &
override;
113 auto operator[](key_type
const &key) -> mapped_type &
override;
115 auto clear() ->
void override;
117 auto find(key_type
const &key) -> iterator
override;
118 auto find(key_type
const &key)
const -> const_iterator
override;
120 auto contains(key_type
const &key)
const ->
bool override;
122 auto erase(key_type
const &key) -> size_type
override;
123 auto erase(iterator) -> iterator
override;
125 auto emplace(value_type &&) -> std::pair<iterator, bool>
override;
139 using concrete_reverse_iterator_type =
141 using concrete_const_iterator_type =
143 using concrete_const_reverse_iterator_type =
147 ~RandomAccessIteratorContainer()
override;
149 RandomAccessIteratorContainer(RandomAccessIteratorContainer
const &other);
150 RandomAccessIteratorContainer(
151 RandomAccessIteratorContainer &&other)
noexcept;
153 RandomAccessIteratorContainer &
154 operator=(RandomAccessIteratorContainer
const &other);
155 RandomAccessIteratorContainer &
156 operator=(RandomAccessIteratorContainer &&other)
noexcept;
158 using AbstractSnapshotsContainer::currentIteration;
159 auto currentIteration()
const -> std::optional<value_type const *>
override;
161 auto begin() -> iterator
override;
162 auto end() -> iterator
override;
163 auto begin()
const -> const_iterator
override;
164 auto end()
const -> const_iterator
override;
165 auto rbegin() -> iterator
override;
166 auto rend() -> iterator
override;
167 auto rbegin()
const -> const_iterator
override;
168 auto rend()
const -> const_iterator
override;
170 auto empty()
const ->
bool override;
171 auto size()
const ->
size_t override;
173 using AbstractSnapshotsContainer::at;
174 auto at(key_type
const &key)
const -> mapped_type
const &
override;
175 auto operator[](key_type
const &key) -> mapped_type &
override;
177 auto clear() ->
void override;
179 auto find(key_type
const &key) -> iterator
override;
180 auto find(key_type
const &key)
const -> const_iterator
override;
182 auto contains(key_type
const &key)
const ->
bool override;
184 auto erase(key_type
const &key) -> size_type
override;
185 auto erase(iterator) -> iterator
override;
187 auto emplace(value_type &&) -> std::pair<iterator, bool>
override;