29 template<
typename... Args>
33 constexpr auto value() -> T& {
return m_value; }
53template<
typename T, concepts::Allocator Alloc = DefaultAllocator>
66 return result.append_container(util::forward<Con>(
container));
68 return util::move(result);
80 constexpr auto insert(ConstIterator position, T
const& value) -> Iterator
83 return emplace(position, value);
85 constexpr auto insert(ConstIterator position, T&& value) -> Iterator {
86 return emplace(position, util::move(value));
89 template<
typename... Args>
91 constexpr auto emplace(ConstIterator position, Args&&... args) ->
decltype(
auto) {
92 return as_fallible(create_node(util::forward<Args>(args)...)) % [&](Node& node) {
97 template<concepts::ContainerCompatible<T> Con>
102 return as_fallible(temp.emplace_back(util::forward<X>(value)));
105 this->
splice(position, temp);
109 constexpr auto push_back(T
const& value) ->
decltype(
auto)
117 template<
typename... Args>
125 template<concepts::ContainerCompatible<T> Con>
134 auto last = --this->
end();
135 auto value = util::move(*last);
148 template<
typename... Args>
156 template<concepts::ContainerCompatible<T> Con>
165 auto first = this->
begin();
166 auto value = util::move(*first);
171 constexpr auto allocator() -> Alloc& {
return m_allocator; }
174 template<
typename... Args>
176 constexpr auto create_node(Args&&... args) ->
decltype(
auto) {
183 [[no_unique_address]] Alloc m_allocator {};
186template<concepts::InputContainer Con,
typename T = meta::ContainerValue<Con>>
constexpr IntrusiveListNode()
Definition list_node.h:11
constexpr auto end() -> Iterator
Definition list.h:106
constexpr auto insert(ConstIterator position, Node &node_ref) -> Iterator
Definition list.h:154
constexpr auto empty() const -> bool
Definition list.h:97
constexpr auto begin() -> Iterator
Definition list.h:105
constexpr void splice(ConstIterator position, IntrusiveList &other)
Definition list.h:197
constexpr IntrusiveList()
Definition list.h:68
Definition linked_list.h:54
constexpr auto allocator() -> Alloc &
Definition linked_list.h:171
constexpr auto emplace(ConstIterator position, Args &&... args) -> decltype(auto)
Definition linked_list.h:91
constexpr auto emplace_front(Args &&... args) -> decltype(auto)
Definition linked_list.h:150
constexpr auto insert(ConstIterator position, T const &value) -> Iterator requires(concepts::CopyConstructible< T >)
Definition linked_list.h:80
constexpr auto emplace_back(Args &&... args) -> decltype(auto)
Definition linked_list.h:119
auto operator=(LinkedList &&) -> LinkedList &=default
constexpr friend auto tag_invoke(types::Tag< util::create_in_place >, InPlaceType< LinkedList >, Con &&container)
Definition linked_list.h:63
constexpr auto prepend_container(Con &&container)
Definition linked_list.h:157
constexpr auto append_container(Con &&container)
Definition linked_list.h:126
constexpr auto insert_container(ConstIterator position, Con &&container)
Definition linked_list.h:98
constexpr auto insert(ConstIterator position, T &&value) -> Iterator
Definition linked_list.h:85
constexpr auto push_back(T &&value) -> decltype(auto)
Definition linked_list.h:115
constexpr auto push_front(T const &value) -> decltype(auto) requires(concepts::CopyConstructible< T >)
Definition linked_list.h:140
constexpr auto push_back(T const &value) -> decltype(auto) requires(concepts::CopyConstructible< T >)
Definition linked_list.h:109
LinkedList(LinkedList &&)=default
constexpr auto push_front(T &&value) -> decltype(auto)
Definition linked_list.h:146
constexpr auto pop_back() -> Optional< T >
Definition linked_list.h:130
constexpr auto pop_front() -> Optional< T >
Definition linked_list.h:161
Definition optional_forward_declaration.h:5
Definition operations.h:11
Definition container_compatible.h:9
Definition operations.h:34
constexpr auto sequence
Definition sequence.h:34
constexpr auto erase
Definition erase.h:76
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
constexpr auto ref
Definition reference_wrapper.h:98
constexpr auto destroy_at
Definition destroy_at.h:24
constexpr auto construct_at
Definition construct_at.h:27
Definition zstring_parser.h:9
constexpr auto allocate_one
Definition allocate_one.h:29
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
constexpr auto invoke_as_fallible
Definition invoke_as_fallible.h:37
constexpr auto as_fallible
Definition as_fallible.h:26
constexpr auto try_infallible
Definition try_infallible.h:31
constexpr auto nullopt
Definition nullopt.h:15
constexpr auto in_place
Definition in_place.h:8
constexpr auto deallocate_one
Definition deallocate_one.h:27
Definition intrusive_tag_base.h:8
Definition linked_list.h:27
constexpr LinkedListNode(InPlace, Args &&... args)
Definition linked_list.h:31
constexpr auto value() -> T &
Definition linked_list.h:33
Definition linked_list.h:40
static constexpr void did_remove(auto &list, Node &node)
Definition linked_list.h:46
LinkedListNode< T > Node
Definition linked_list.h:41
static constexpr auto down_cast(InPlaceType< T >, Node &node) -> T &
Definition linked_list.h:44
static constexpr auto is_sized(InPlaceType< T >) -> bool
Definition linked_list.h:43
Definition in_place_template.h:5
Definition in_place_type.h:5