7template<
typename Self,
typename Value>
10 constexpr auto self() -> Self& {
return static_cast<Self&
>(*this); }
11 constexpr auto self()
const -> Self
const& {
return static_cast<Self const&
>(*this); }
20 auto result = Self(util::forward<Args>(args)...);
24 result.assume_tail(result.size());
25 return util::move(result);
38 constexpr auto push_back(Value
const& value) ->
decltype(
auto)
44 constexpr auto push_back(Value&& value) ->
decltype(
auto)
50 template<
typename... Args>
56 template<concepts::InputContainer Con>
64 constexpr auto push_front(Value
const& value) ->
decltype(
auto)
70 constexpr auto push_front(Value&& value) ->
decltype(
auto)
76 template<
typename... Args>
82 template<concepts::InputContainer Con>
90 constexpr auto insert(ConstIterator position, Value
const& value)
96 constexpr auto insert(ConstIterator position, Value&& value)
102 template<
typename... Args>
104 constexpr auto emplace(ConstIterator position, Args&&... args) {
105 return ring::emplace(self(), position, util::forward<Args>(args)...);
131 template<
typename F, SameAs<Tag<erase_if>> T = Tag<erase_if>>
Definition constant_ring_interface.h:9
constexpr auto end()
Definition constant_ring_interface.h:20
Definition mutable_ring_interface.h:8
constexpr auto push_back(Value const &value) -> decltype(auto) requires(concepts::CopyConstructible< Value >)
Definition mutable_ring_interface.h:38
constexpr auto clone() const
Definition mutable_ring_interface.h:30
constexpr auto resize(size_t count)
Definition mutable_ring_interface.h:118
constexpr auto append_container(Con &&container)
Definition mutable_ring_interface.h:58
constexpr auto insert(ConstIterator position, Value &&value)
Definition mutable_ring_interface.h:96
constexpr auto erase(ConstIterator position)
Definition mutable_ring_interface.h:108
constexpr void clear()
Definition mutable_ring_interface.h:36
constexpr auto emplace_front(Args &&... args) -> decltype(auto)
Definition mutable_ring_interface.h:78
constexpr auto resize(size_t count, Value const &value)
Definition mutable_ring_interface.h:124
constexpr auto pop_back() -> decltype(auto)
Definition mutable_ring_interface.h:62
constexpr auto push_front(Value const &value) -> decltype(auto) requires(concepts::CopyConstructible< Value >)
Definition mutable_ring_interface.h:64
constexpr auto insert(ConstIterator position, Value const &value)
Definition mutable_ring_interface.h:90
constexpr auto erase(ConstIterator start, ConstIterator end)
Definition mutable_ring_interface.h:109
constexpr auto emplace_back(Args &&... args) -> decltype(auto)
Definition mutable_ring_interface.h:52
constexpr auto reserve(usize n)
Definition mutable_ring_interface.h:114
constexpr auto pop_front() -> decltype(auto)
Definition mutable_ring_interface.h:88
constexpr auto push_back(Value &&value) -> decltype(auto) requires(concepts::MoveConstructible< Value >)
Definition mutable_ring_interface.h:44
constexpr auto emplace(ConstIterator position, Args &&... args)
Definition mutable_ring_interface.h:104
constexpr auto make_contigous()
Definition mutable_ring_interface.h:116
constexpr auto prepend_container(Con &&container)
Definition mutable_ring_interface.h:84
constexpr friend auto tag_invoke(T, Self &self, F &&function)
Definition mutable_ring_interface.h:133
constexpr auto push_front(Value &&value) -> decltype(auto) requires(concepts::MoveConstructible< Value >)
Definition mutable_ring_interface.h:70
constexpr friend auto tag_invoke(types::Tag< util::create_in_place >, InPlaceType< Self >, Con &&container, Args &&... args)
Definition mutable_ring_interface.h:18
constexpr auto iterator(ConstIterator iter)
Definition mutable_ring_interface.h:112
Definition ring_iterator.h:8
Definition operations.h:11
Definition container_compatible.h:9
Definition operations.h:34
Definition operations.h:24
Definition operations.h:43
Definition any_storable.h:9
constexpr auto pop_front(concepts::detail::MutableRing auto &ring)
Definition ring_operations.h:188
constexpr auto prepend_container(Ring &ring, Con &&container) -> R
Definition ring_operations.h:182
constexpr auto emplace_back(Ring &ring, Args &&... args) -> decltype(auto)
Definition ring_operations.h:128
constexpr auto append_container(Ring &ring, Con &&container) -> R
Definition ring_operations.h:144
constexpr auto iterator(Ring &, RingIterator< Value const > iterator)
Definition ring_operations.h:77
constexpr auto resize(Ring &ring, usize count)
Definition ring_operations.h:260
constexpr auto make_contigous(concepts::detail::MutableRing auto &ring)
Definition ring_operations.h:235
constexpr void clear(concepts::detail::MutableRing auto &ring)
Definition ring_operations.h:95
constexpr auto erase(Ring &ring, RingIterator< Value const > first, RingIterator< Value const > last)
Definition ring_operations.h:212
constexpr auto reserve(Ring &ring, usize capacity) -> R
Definition ring_operations.h:103
constexpr auto emplace_front(Ring &ring, Args &&... args) -> decltype(auto)
Definition ring_operations.h:163
constexpr auto pop_back(concepts::detail::MutableRing auto &ring)
Definition ring_operations.h:150
constexpr auto emplace(Ring &ring, RingIterator< T const > it, Args &&... args)
Definition ring_operations.h:201
constexpr auto append_container(Vec &vector, Con &&container) -> R
Definition vector_append_container.h:21
constexpr auto clone
Definition clone.h:27
constexpr auto count
Definition count.h:37
constexpr auto remove_if
Definition remove_if.h:38
size_t usize
Definition integers.h:33
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
constexpr auto create(Args &&... args)
Definition create.h:21
constexpr auto invoke_as_fallible
Definition invoke_as_fallible.h:37
constexpr auto try_infallible
Definition try_infallible.h:31
Definition in_place_type.h:5