Lines Matching +full:alloc +full:- +full:ranges
1 // -*- C++ -*-
2 //===----------------------------------------------------------------------===//
6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
8 //===----------------------------------------------------------------------===//
19 template <class T, class Alloc = allocator<T> >
26 typedef Alloc allocator_type;
31 typedef implementation-defined iterator;
32 typedef implementation-defined const_iterator;
33 typedef implementation-defined size_type;
34 typedef implementation-defined difference_type;
49 template<container-compatible-range<T> R>
69 template<container-compatible-range<T> R>
106 template<container-compatible-range<T> R>
110 template<container-compatible-range<T> R>
119 template<container-compatible-range<T> R>
163 -> list<typename iterator_traits<InputIterator>::value_type, Allocator>; // C++17
165 template<ranges::input_range R, class Allocator = allocator<ranges::range_value_t<R>>>
167 -> list<ranges::range_value_t<R>, Allocator>; // C++23
169 template <class T, class Alloc>
170 bool operator==(const list<T,Alloc>& x, const list<T,Alloc>& y);
171 template <class T, class Alloc>
172 bool operator< (const list<T,Alloc>& x, const list<T,Alloc>& y); // removed in C++20
173 template <class T, class Alloc>
174 bool operator!=(const list<T,Alloc>& x, const list<T,Alloc>& y); // removed in C++20
175 template <class T, class Alloc>
176 bool operator> (const list<T,Alloc>& x, const list<T,Alloc>& y); // removed in C++20
177 template <class T, class Alloc>
178 bool operator>=(const list<T,Alloc>& x, const list<T,Alloc>& y); // removed in C++20
179 template <class T, class Alloc>
180 bool operator<=(const list<T,Alloc>& x, const list<T,Alloc>& y); // removed in C++20
182 synth-three-way-result<T> operator<=>(const list<T, Allocator>& x,
185 template <class T, class Alloc>
186 void swap(list<T,Alloc>& x, list<T,Alloc>& y)
242 // standard-mandated includes
315 // since that is handled by the list itself in order to be allocator-aware.
375 _LIBCPP_HIDE_FROM_ABI reference operator*() const { return __ptr_->__as_node()->__get_value(); }
376 _LIBCPP_HIDE_FROM_ABI pointer operator->() const {
377 return pointer_traits<pointer>::pointer_to(__ptr_->__as_node()->__get_value());
381 __ptr_ = __ptr_->__next_;
390 _LIBCPP_HIDE_FROM_ABI __list_iterator& operator--() {
391 __ptr_ = __ptr_->__prev_;
394 _LIBCPP_HIDE_FROM_ABI __list_iterator operator--(int) {
396 --(*this);
433 _LIBCPP_HIDE_FROM_ABI reference operator*() const { return __ptr_->__as_node()->__get_value(); }
434 _LIBCPP_HIDE_FROM_ABI pointer operator->() const {
435 return pointer_traits<pointer>::pointer_to(__ptr_->__as_node()->__get_value());
439 __ptr_ = __ptr_->__next_;
448 _LIBCPP_HIDE_FROM_ABI __list_const_iterator& operator--() {
449 __ptr_ = __ptr_->__prev_;
452 _LIBCPP_HIDE_FROM_ABI __list_const_iterator operator--(int) {
454 --(*this);
497 …"internal allocator type must differ from user-specified type; otherwise overload resolution break…
564 __alloc, std::addressof(__guard.__get()->__get_value()), std::forward<_Args>(__args)...);
572 __node_alloc_traits::destroy(__alloc, std::addressof(__node->__get_value()));
597 __f->__prev_->__next_ = __l->__next_;
598 __l->__next_->__prev_ = __f->__prev_;
626 __unlink_nodes(__f, __l->__prev_);
629 __node_pointer __np = __f->__as_node();
630 __f = __f->__next_;
645 … __alloc_traits::propagate_on_container_swap::value || this->__node_alloc() == __c.__node_alloc(),
655 __end_.__prev_->__next_ = __end_.__next_->__prev_ = __end_as_link();
659 __c.__end_.__prev_->__next_ = __c.__end_.__next_->__prev_ = __c.__end_as_link();
704 for (; __n > 0; --__n)
748 __assign_with_sentinel(ranges::begin(__range), ranges::end(__range));
778 return base::__end_.__next_->__as_node()->__get_value();
782 return base::__end_.__next_->__as_node()->__get_value();
786 return base::__end_.__prev_->__as_node()->__get_value();
790 return base::__end_.__prev_->__as_node()->__get_value();
852 return __insert_with_sentinel(__position, ranges::begin(__range), ranges::end(__range));
938 list(_InputIterator, _InputIterator) -> list<__iter_value_type<_InputIterator>, _Alloc>;
944 list(_InputIterator, _InputIterator, _Alloc) -> list<__iter_value_type<_InputIterator>, _Alloc>;
948 template <ranges::input_range _Range,
949 class _Alloc = allocator<ranges::range_value_t<_Range>>,
951 list(from_range_t, _Range&&, _Alloc = _Alloc()) -> list<ranges::range_value_t<_Range>, _Alloc>;
957 __p->__prev_->__next_ = __f;
958 __f->__prev_ = __p->__prev_;
959 __p->__prev_ = __l;
960 __l->__next_ = __p;
966 __f->__prev_ = base::__end_as_link();
967 __l->__next_ = base::__end_.__next_;
968 __l->__next_->__prev_ = __l;
975 __l->__next_ = base::__end_as_link();
976 __f->__prev_ = base::__end_.__prev_;
977 __f->__prev_->__next_ = __f;
983 return __n <= base::__sz() / 2 ? std::next(begin(), __n) : std::prev(end(), base::__sz() - __n);
988 for (; __n > 0; --__n)
999 for (; __n > 0; --__n)
1006 for (; __n > 0; --__n)
1126 for (; __n > 0 && __i != __e; --__n, (void)++__i)
1141 __node_pointer __node = this->__create_node(/* prev = */ nullptr, /* next = */ nullptr, __x);
1142 __link_nodes(__p.__ptr_, __node->__as_link(), __node->__as_link());
1144 return iterator(__node->__as_link());
1153 __node_pointer __node = this->__create_node(/* prev = */ nullptr, /* next = */ nullptr, __x);
1155 __r = iterator(__node->__as_link());
1160 for (--__n; __n != 0; --__n, (void)++__e, ++__ds) {
1161 …__e.__ptr_->__next_ = this->__create_node(/* prev = */ __e.__ptr_, /* next = */ nullptr, __x)->__a…
1166 __link_pointer __prev = __e.__ptr_->__prev_;
1167 __node_pointer __current = __e.__ptr_->__as_node();
1168 this->__delete_node(__current);
1195 __node_pointer __node = this->__create_node(/* prev = */ nullptr, /* next = */ nullptr, *__f);
1197 __r = iterator(__node->__as_link());
1203 …__e.__ptr_->__next_ = this->__create_node(/* prev = */ __e.__ptr_, /* next = */ nullptr, *__f)->__…
1208 __link_pointer __prev = __e.__ptr_->__prev_;
1209 __node_pointer __current = __e.__ptr_->__as_node();
1210 this->__delete_node(__current);
1226 __node_pointer __node = this->__create_node(/* prev = */ nullptr, /* next = */ nullptr, __x);
1227 __link_pointer __nl = __node->__as_link();
1234 __node_pointer __node = this->__create_node(/* prev = */ nullptr, /* next = */ nullptr, __x);
1235 __link_pointer __nl = __node->__as_link();
1244 …__node_pointer __node = this->__create_node(/* prev = */ nullptr, /* next = */ nullptr, std::move(…
1245 __link_pointer __nl = __node->__as_link();
1252 …__node_pointer __node = this->__create_node(/* prev = */ nullptr, /* next = */ nullptr, std::move(…
1253 __link_pointer __nl = __node->__as_link();
1267 … this->__create_node(/* prev = */ nullptr, /* next = */ nullptr, std::forward<_Args>(__args)...);
1268 __link_pointer __nl = __node->__as_link();
1272 return __node->__get_value();
1285 … this->__create_node(/* prev = */ nullptr, /* next = */ nullptr, std::forward<_Args>(__args)...);
1286 __link_pointer __nl = __node->__as_link();
1290 return __node->__get_value();
1298 … this->__create_node(/* prev = */ nullptr, /* next = */ nullptr, std::forward<_Args>(__args)...);
1299 __link_pointer __nl = __node->__as_link();
1307 …__node_pointer __node = this->__create_node(/* prev = */ nullptr, /* next = */ nullptr, std::move(…
1308 __link_pointer __nl = __node->__as_link();
1321 --base::__sz();
1322 this->__delete_node(__n->__as_node());
1330 --base::__sz();
1331 this->__delete_node(__n->__as_node());
1336 …_LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(__p != end(), "list::erase(iterator) called with a non-derefer…
1338 __link_pointer __r = __n->__next_;
1340 --base::__sz();
1341 this->__delete_node(__n->__as_node());
1348 base::__unlink_nodes(__f.__ptr_, __l.__ptr_->__prev_);
1352 --base::__sz();
1353 this->__delete_node(__n->__as_node());
1364 __n -= base::__sz();
1366 __node_pointer __node = this->__create_node(/* prev = */ nullptr, /* next = */ nullptr);
1368 iterator __r = iterator(__node->__as_link());
1373 for (--__n; __n != 0; --__n, (void)++__e, ++__ds) {
1374 …__e.__ptr_->__next_ = this->__create_node(/* prev = */ __e.__ptr_, /* next = */ nullptr)->__as_lin…
1379 __link_pointer __prev = __e.__ptr_->__prev_;
1380 __node_pointer __current = __e.__ptr_->__as_node();
1381 this->__delete_node(__current);
1399 __n -= base::__sz();
1401 __node_pointer __node = this->__create_node(/* prev = */ nullptr, /* next = */ nullptr, __x);
1403 __link_pointer __nl = __node->__as_link();
1409 for (--__n; __n != 0; --__n, (void)++__e, ++__ds) {
1410 …__e.__ptr_->__next_ = this->__create_node(/* prev = */ __e.__ptr_, /* next = */ nullptr, __x)->__a…
1415 __link_pointer __prev = __e.__ptr_->__prev_;
1416 __node_pointer __current = __e.__ptr_->__as_node();
1417 this->__delete_node(__current);
1446 if (__p.__ptr_ != __i.__ptr_ && __p.__ptr_ != __i.__ptr_->__next_) {
1450 --__c.__sz();
1459 --__l;
1463 __c.__sz() -= __s;
1547 __c.__sz() -= __ds;
1549 __link_pointer __l = __m2.__ptr_->__prev_;
1582 if (__comp(*--__e2, *__f1)) {
1593 iterator __f2 = __e1 = __sort(__e1, __e2, __n - __n2, __comp);
1599 __link_pointer __l = __m2.__ptr_->__prev_;
1614 __link_pointer __l = __m2.__ptr_->__prev_;
1633 std::swap(__i.__ptr_->__prev_, __i.__ptr_->__next_);
1634 __i.__ptr_ = __i.__ptr_->__prev_;
1636 std::swap(__e.__ptr_->__prev_, __e.__ptr_->__next_);