21 class dynamic_disposables_container
24 explicit dynamic_disposables_container() =
default;
26 dynamic_disposables_container(
const dynamic_disposables_container&) =
delete;
27 dynamic_disposables_container(dynamic_disposables_container&& other)
noexcept =
default;
29 dynamic_disposables_container& operator=(
const dynamic_disposables_container& other) =
delete;
30 dynamic_disposables_container& operator=(dynamic_disposables_container&& other)
noexcept =
default;
39 m_data.push_back(std::move(d));
44 m_data.erase(std::remove(m_data.begin(), m_data.end(), d), m_data.end());
49 for (
const auto& d : m_data)
61 mutable std::vector<rpp::disposable_wrapper> m_data{};
65 class static_disposables_container
68 static_disposables_container() =
default;
69 static_disposables_container(
const static_disposables_container&) =
delete;
70 static_disposables_container& operator=(
const static_disposables_container& other) =
delete;
72 static_disposables_container& operator=(static_disposables_container&& other)
noexcept
77 m_size = other.m_size;
78 for (
size_t i = 0; i < m_size; ++i)
79 std::construct_at(get(i), std::move(*other.get(i)));
85 static_disposables_container(static_disposables_container&& other)
noexcept
87 *
this = std::move(other);
90 ~static_disposables_container()
noexcept
99 std::construct_at(get(m_size++), d);
106 std::construct_at(get(m_size++), std::move(d));
111 for (
size_t i = 0; i < m_size;)
119 for (
size_t j = i + 1; j < m_size; ++j)
120 *get(j - 1) = std::move(*get(j));
122 std::destroy_at(get(--m_size));
128 for (
size_t i = 0; i < m_size; ++i)
136 for (
size_t i = 0; i < m_size; ++i)
137 std::destroy_at(get(i));