1#ifndef BPMNOS_Execution_auto_set_H
2#define BPMNOS_Execution_auto_set_H
14template <
typename V,
typename... U>
50 return iterator(tuples.begin(),
this);
74 tuples.emplace(value, data...);
85 auto& element = std::get< std::weak_ptr<T> >(*it.current);
86 if (
auto shared = element.lock() ) {
87 if ( shared.get() == pointer ) {
88 tuples.erase(it.current);
97 for ( [[maybe_unused]]
auto _ : *
this ) {
108 bool operator()(
const std::tuple<V, U... >& lhs,
const std::tuple<V, U... >& rhs)
const {
110 if ( std::get<0>(lhs) != std::get<0>(rhs) ) {
111 return std::get<0>(lhs) < std::get<0>(rhs);
114 return (&lhs < &rhs);
117 mutable std::set< std::tuple< V, U... >, comparator > tuples;
Set of tuples ordered in increasing order of the first component with automatic removal of tuples con...
iterator erase(iterator it)
void emplace(V value, U... data)
bool expired(const std::tuple< U... > &t)
Determines whether any of the initial weak_ptr elements in a tuple is expired.
std::tuple< V, U... > operator*() const
auto_set< V, U... > * container
iterator(typename std::set< std::tuple< V, U... > >::iterator iter, auto_set< V, U... > *cont)
bool operator!=(const iterator &other) const
std::set< std::tuple< V, U... > >::iterator current