1#ifndef BPMNOS_Execution_auto_list_H
2#define BPMNOS_Execution_auto_list_H
14template <
typename... U>
49 return iterator(tuples.begin(),
this);
73 tuples.emplace_back(data...);
82 tuples.remove_if([pointer](
const std::tuple< U... >& elements) {
83 auto& element = std::get< std::weak_ptr<T> >(elements);
84 if (
auto shared = element.lock() ) {
85 return shared.get() == pointer;
92 for ( [[maybe_unused]]
auto& _ : *
this ) {
103 mutable std::list< std::tuple< U... > > tuples;
List of tuples with automatic removal of tuples containing an expired weak_ptr.
iterator erase(iterator it)
void emplace_back(U... data)
bool expired(const std::tuple< U... > &t)
Determines whether any of the initial weak_ptr elements in a tuple is expired.
std::list< std::tuple< U... > >::iterator current
bool operator!=(const iterator &other) const
std::tuple< U... > & operator*() const
auto_list< U... > * container
iterator(typename std::list< std::tuple< U... > >::iterator iter, auto_list< U... > *cont)