STD::__PROFILE::LIST(3cxx)

πŸ“¦
version 9.5.0 Β· 3 versions
, in ubuntu noble

πŸ’– std::__profile::list< _Tp, _Allocator > πŸ’–

okay bestie, this is the 3cxx manual page for std::__profile::list< _Tp, _Allocator >, and she is long, so we're doing this in 3 parts β€” this is part 1. no cap. 🫢


✨ NAME ✨

std::__profile::list< _Tp, _Allocator > β€” List wrapper with performance instrumentation. that's the whole vibe, she's a list but with extra profiling garnish on top. πŸ’…


🌸 SYNOPSIS 🌸

#include <list>

Inherits list< _Tp, std::allocator< _Tp > >, and std::__profile::_List_profile< _List >.

πŸŽ€ Public Types πŸŽ€

  • typedef _Allocator allocator_type
  • typedef __iterator_tracker< typename _Base::const_iterator, list > const_iterator
  • typedef _Base::const_pointer const_pointer
  • typedef _Base::const_reference const_reference
  • typedef std::reverse_iterator< const_iterator > const_reverse_iterator
  • typedef _Base::difference_type difference_type
  • typedef __iterator_tracker< typename _Base::iterator, list > iterator
  • typedef _Base::pointer pointer
  • typedef _Base::reference reference
  • typedef std::reverse_iterator< iterator > reverse_iterator
  • typedef _Base::size_type size_type
  • typedef _Tp value_type

πŸ‘‘ Public Member Functions πŸ‘‘

  • template<typename _InputIterator , typename = std::_RequireInputIter<_InputIterator>> list (_InputIterator __first, _InputIterator __last, const _Allocator &__a=_Allocator())
  • list (const _Allocator &__a) noexcept
  • list (const _Base &__x)
  • list (const list &)=default
  • list (const list &__x, const allocator_type &__a)
  • list (initializer_list< value_type > __l, const allocator_type &__a=allocator_type())
  • list (list &&)=default
  • list (list &&__x, const allocator_type &__a)
  • list (size_type __n, const _Tp &__value, const _Allocator &__a=_Allocator())
  • list (size_type __n, const allocator_type &__a=allocator_type())
  • const _Base & _M_base () const noexcept
  • _Base & _M_base () noexcept
  • void _M_profile_construct () noexcept
  • void _M_profile_destruct () noexcept
  • void _M_profile_iterate (int __rewind=0) const
  • void _M_swap (_List_profile &__other)
  • const_reference back () const noexcept
  • reference back () noexcept
  • const_iterator begin () const noexcept
  • iterator begin () noexcept
  • const_iterator cbegin () const noexcept
  • const_iterator cend () const noexcept
  • void clear () noexcept
  • const_reverse_iterator crbegin () const noexcept
  • const_reverse_iterator crend () const noexcept
  • template<typename... _Args> iterator emplace (const_iterator __position, _Args &&... __args)
  • const_iterator end () const noexcept
  • iterator end () noexcept
  • iterator erase (const_iterator __pos) noexcept
  • iterator erase (const_iterator __pos, const_iterator __last) noexcept
  • template<typename _InputIterator , typename = std::_RequireInputIter<_InputIterator>> iterator insert (const_iterator __pos, _InputIterator __first, _InputIterator __last)
  • iterator insert (const_iterator __pos, _Tp &&__x)
  • iterator insert (const_iterator __pos, const _Tp &__x)
  • iterator insert (const_iterator __pos, initializer_list< value_type > __l)
  • iterator insert (const_iterator __pos, size_type __n, const _Tp &__x)
  • void merge (list &&__x)
  • template<class _Compare > void merge (list &&__x, _Compare __comp)
  • void merge (list &__x)
  • template<typename _Compare > void merge (list &__x, _Compare __comp)
  • list & operator= (const list &)=default
  • list & operator= (initializer_list< value_type > __l)
  • list & operator= (list &&)=default
  • void pop_back () noexcept
  • void pop_front () noexcept
  • void push_front (const value_type &__x)
  • const_reverse_iterator rbegin () const noexcept
  • reverse_iterator rbegin () noexcept
  • void remove (const _Tp &__value)
  • template<class _Predicate > void remove_if (_Predicate __pred)
  • const_reverse_iterator rend () const noexcept
  • reverse_iterator rend () noexcept
  • void splice (const_iterator __pos, list &&__x) noexcept
  • void splice (const_iterator __pos, list &&__x, const_iterator __first, const_iterator __last) noexcept
  • void splice (const_iterator __pos, list &&__x, const_iterator __i) noexcept
  • void splice (const_iterator __pos, list &__x) noexcept
  • void splice (const_iterator __pos, list &__x, const_iterator __first, const_iterator __last) noexcept
  • void splice (const_iterator __pos, list &__x, const_iterator __i)
  • void swap (list &__x) noexcept(/*conditional */)
  • void unique ()
  • template<class _BinaryPredicate > void unique (_BinaryPredicate __binary_pred)

πŸ¦‹ Public Attributes πŸ¦‹

  • __gnu_profile::__list2slist_info * _M_list2slist_info
  • __gnu_profile::__list2vector_info * _M_list2vector_info

🌈 Detailed Description 🌈

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
    class std::__profile::list< _Tp, _Allocator >

List wrapper with performance instrumentation.

Definition at line 106 of file profile/list.

ngl, this is the whole point of the class: it's a list, but she's clocked in and taking notes on her own performance. iconic behaviour honestly. πŸ”₯

πŸ’œ Member Typedef Documentation πŸ’œ

  • template<typename _Tp , typename _Allocator = std::allocator<_Tp>> typedef _Allocator std::__profile::list< _Tp, _Allocator >::allocator_type β€” Definition at line 125 of file profile/list.
  • template<typename _Tp , typename _Allocator = std::allocator<_Tp>> typedef __iterator_tracker<typename _Base::const_iterator, list> std::__profile::list< _Tp, _Allocator >::const_iterator β€” Definition at line 119 of file profile/list.
  • template<typename _Tp , typename _Allocator = std::allocator<_Tp>> typedef _Base::const_pointer std::__profile::list< _Tp, _Allocator >::const_pointer β€” Definition at line 127 of file profile/list.
  • template<typename _Tp , typename _Allocator = std::allocator<_Tp>> typedef _Base::const_reference std::__profile::list< _Tp, _Allocator >::const_reference β€” Definition at line 114 of file profile/list.
  • template<typename _Tp , typename _Allocator = std::allocator<_Tp>> typedef std::reverse_iterator<const_iterator> std::__profile::list< _Tp, _Allocator >::const_reverse_iterator β€” Definition at line 129 of file profile/list.
  • template<typename _Tp , typename _Allocator = std::allocator<_Tp>> typedef _Base::difference_type std::__profile::list< _Tp, _Allocator >::difference_type β€” Definition at line 122 of file profile/list.
  • template<typename _Tp , typename _Allocator = std::allocator<_Tp>> typedef __iterator_tracker<typename _Base::iterator, list> std::__profile::list< _Tp, _Allocator >::iterator β€” Definition at line 117 of file profile/list.
  • template<typename _Tp , typename _Allocator = std::allocator<_Tp>> typedef _Base::pointer std::__profile::list< _Tp, _Allocator >::pointer β€” Definition at line 126 of file profile/list.
  • template<typename _Tp , typename _Allocator = std::allocator<_Tp>> typedef _Base::reference std::__profile::list< _Tp, _Allocator >::reference β€” Definition at line 113 of file profile/list.
  • template<typename _Tp , typename _Allocator = std::allocator<_Tp>> typedef std::reverse_iterator<iterator> std::__profile::list< _Tp, _Allocator >::reverse_iterator β€” Definition at line 128 of file profile/list.
  • template<typename _Tp , typename _Allocator = std::allocator<_Tp>> typedef _Base::size_type std::__profile::list< _Tp, _Allocator >::size_type β€” Definition at line 121 of file profile/list.
  • template<typename _Tp , typename _Allocator = std::allocator<_Tp>> typedef _Tp std::__profile::list< _Tp, _Allocator >::value_type β€” Definition at line 124 of file profile/list.

πŸ’… Constructor & Destructor Documentation πŸ’…

  • template<typename _Tp , typename _Allocator = std::allocator<_Tp>> std::__profile::list< _Tp, _Allocator >::list (initializer_list< value_type > __l, const allocator_type & __a = allocator_type()) [inline] β€” Definition at line 145 of file profile/list.
  • template<typename _Tp , typename _Allocator = std::allocator<_Tp>> std::__profile::list< _Tp, _Allocator >::list (const list< _Tp, _Allocator > & __x, const allocator_type & __a) [inline] β€” Definition at line 149 of file profile/list.
  • template<typename _Tp , typename _Allocator = std::allocator<_Tp>> std::__profile::list< _Tp, _Allocator >::list (list< _Tp, _Allocator > && __x, const allocator_type & __a) [inline] β€” Definition at line 152 of file profile/list.
  • template<typename _Tp , typename _Allocator = std::allocator<_Tp>> std::__profile::list< _Tp, _Allocator >::list (const _Allocator & __a) [inline], [explicit], [noexcept] β€” Definition at line 157 of file profile/list.
  • template<typename _Tp , typename _Allocator = std::allocator<_Tp>> std::__profile::list< _Tp, _Allocator >::list (size_type __n, const allocator_type & __a = allocator_type()) [inline], [explicit] β€” Definition at line 162 of file profile/list.
  • template<typename _Tp , typename _Allocator = std::allocator<_Tp>> std::__profile::list< _Tp, _Allocator >::list (size_type __n, const _Tp & __value, const _Allocator & __a = _Allocator()) [inline] β€” Definition at line 165 of file profile/list.
  • template<typename _Tp , typename _Allocator = std::allocator<_Tp>> template<typename _InputIterator , typename = std::_RequireInputIter<_InputIterator>> std::__profile::list< _Tp, _Allocator >::list (_InputIterator __first, _InputIterator __last, const _Allocator & __a = _Allocator()) [inline] β€” Definition at line 181 of file profile/list.
  • template<typename _Tp , typename _Allocator = std::allocator<_Tp>> std::__profile::list< _Tp, _Allocator >::list (const _Base & __x) [inline] β€” Definition at line 185 of file profile/list.

πŸ’… Member Function Documentation πŸ’…

okay bestie, deep breath, hydrate, sit down β€” this is the main character section of the whole page. every single member function of std::__profile::list, in the exact order the docs list them, with the full signature, the attribute tags, and the exact line of profile/list where each one lives. no skipping, no summarising, we are eating the whole plate. πŸ“

quick heads-up so the walls of code don't jump you: almost every one of these declarations opens with the same class-template prefix,

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>>

so when you see that at the top, that's just the class's own params, not a new thing. the _List_profile< _List > ones are the odd ones out and they're tagged [inherited] β€” they come from the profile base, and I'm telling you because the docs tell you. πŸ’–


_M_base () const

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> const _Base & std::__profile::list< _Tp, _Allocator >::_M_base () const

[inline], [noexcept] β€” Definition at line 581 of file profile/list.

the const flavour, and she's noexcept about it. ✨

_M_base ()

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> _Base & std::__profile::list< _Tp, _Allocator >::_M_base ()

[inline], [noexcept] β€” Definition at line 578 of file profile/list.

same girl, but without the const β€” she gives you a _Base & instead of a const _Base &. both are [inline] and [noexcept], periodt. πŸ’…

_List_profile< _List >::_M_profile_construct ()

template<typename _List > void std::__profile::_List_profile< _List >::_M_profile_construct ()

[inline], [noexcept], [inherited] β€” Definition at line 55 of file profile/list.

inherited, returns void, takes nothing, and is very noexcept about all of it. 🫢

_List_profile< _List >::_M_profile_destruct ()

template<typename _List > void std::__profile::_List_profile< _List >::_M_profile_destruct ()

[inline], [noexcept], [inherited] β€” Definition at line 62 of file profile/list.

the inherited twin of the one above, seven lines further down. iconic symmetry, honestly. ✨

_M_profile_iterate (int __rewind = 0) const

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> void std::__profile::list< _Tp, _Allocator >::_M_profile_iterate (int __rewind = 0) const

[inline] β€” Definition at line 583 of file profile/list.

note bestie: default argument int __rewind = 0, it's a const member, and β€” read carefully β€” there is no [noexcept] on this one. πŸ™ˆ

_List_profile< _List >::_M_swap (_List_profile< _List > & __other)

template<typename _List > void std::__profile::_List_profile< _List >::_M_swap (_List_profile< _List > & __other)

[inline], [inherited] β€” Definition at line 71 of file profile/list.

takes a reference to another _List_profile< _List > named __other. [inline] and [inherited] only β€” no noexcept here either, don't let anyone tell you otherwise. πŸ’€


back () const

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> const_reference std::__profile::list< _Tp, _Allocator >::back () const

[inline], [noexcept] β€” Definition at line 286 of file profile/list.

returns const_reference. πŸ’–

back ()

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> reference std::__profile::list< _Tp, _Allocator >::back ()

[inline], [noexcept] β€” Definition at line 279 of file profile/list.

returns plain reference. the const/non-const duo, both [inline], both [noexcept], both slaying. πŸŽ€

begin () const

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> const_iterator std::__profile::list< _Tp, _Allocator >::begin () const

[inline], [noexcept] β€” Definition at line 220 of file profile/list.

begin ()

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> iterator std::__profile::list< _Tp, _Allocator >::begin ()

[inline], [noexcept] β€” Definition at line 216 of file profile/list.

cbegin () const

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> const_iterator std::__profile::list< _Tp, _Allocator >::cbegin () const

[inline], [noexcept] β€” Definition at line 261 of file profile/list.

cend () const

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> const_iterator std::__profile::list< _Tp, _Allocator >::cend () const

[inline], [noexcept] β€” Definition at line 265 of file profile/list.

the c-girlies (cbegin and cend) both hand you const_iterator and are const members themselves. consistency, we love to see it. 🌸

clear ()

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> void std::__profile::list< _Tp, _Allocator >::clear ()

[inline], [noexcept] β€” Definition at line 421 of file profile/list.

returns void, takes nothing, [inline], [noexcept], line 421. clean. ✨

crbegin () const

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> const_reverse_iterator std::__profile::list< _Tp, _Allocator >::crbegin () const

[inline], [noexcept] β€” Definition at line 269 of file profile/list.

crend () const

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> const_reverse_iterator std::__profile::list< _Tp, _Allocator >::crend () const

[inline], [noexcept] β€” Definition at line 273 of file profile/list.

both const_reverse_iterator, both const, both [noexcept]. the reverse-const squad is fully assembled. πŸ¦‹


emplace (const_iterator __position, _Args &&... __args)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> template<typename... _Args> iterator std::__profile::list< _Tp, _Allocator >::emplace (const_iterator __position, _Args &&... __args)

[inline] β€” Definition at line 318 of file profile/list.

okay this one's got two template heads stacked: the class one and template<typename... _Args>. takes a const_iterator __position plus a variadic pack _Args &&... __args, hands back an iterator. [inline] only, bestie. πŸ’œ

end () const

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> const_iterator std::__profile::list< _Tp, _Allocator >::end () const

[inline], [noexcept] β€” Definition at line 231 of file profile/list.

end ()

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> iterator std::__profile::list< _Tp, _Allocator >::end ()

[inline], [noexcept] β€” Definition at line 224 of file profile/list.

erase (const_iterator __pos)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> iterator std::__profile::list< _Tp, _Allocator >::erase (const_iterator __pos)

[inline], [noexcept] β€” Definition at line 394 of file profile/list.

one __pos, returns iterator. yes she's noexcept, no we're not asking questions. πŸ’…

erase (const_iterator __pos, const_iterator __last)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> iterator std::__profile::list< _Tp, _Allocator >::erase (const_iterator __pos, const_iterator __last)

[inline], [noexcept] β€” Definition at line 402 of file profile/list.

the range version, __pos through __last, still returns iterator, still [inline], still [noexcept]. πŸ”₯

insert (const_iterator __pos, _InputIterator __first, _InputIterator __last)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> template<typename _InputIterator , typename  = std::_RequireInputIter<_InputIterator>> iterator std::__profile::list< _Tp, _Allocator >::insert (const_iterator __pos, _InputIterator __first, _InputIterator __last)

[inline] β€” Definition at line 374 of file profile/list.

double template head again, and the second one has a defaulted type param that's literally std::_RequireInputIter<_InputIterator>. that's the vibes check gatekeeping who's allowed in. [inline] only. πŸšͺ

insert (const_iterator __pos, _Tp && __x)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> iterator std::__profile::list< _Tp, _Allocator >::insert (const_iterator __pos, _Tp && __x)

[inline] β€” Definition at line 339 of file profile/list.

takes an rvalue ref _Tp && __x. πŸ’«

insert (const_iterator __pos, const _Tp & __x)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> iterator std::__profile::list< _Tp, _Allocator >::insert (const_iterator __pos, const _Tp & __x)

[inline] β€” Definition at line 328 of file profile/list.

the const-ref one, same name, same return type, different signature. overloads are wild fr fr. πŸ“

insert (const_iterator __pos, initializer_list< value_type > __l)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> iterator std::__profile::list< _Tp, _Allocator >::insert (const_iterator __pos, initializer_list< value_type > __l)

[inline] β€” Definition at line 347 of file profile/list.

takes an initializer_list< value_type > named __l. curly-brace girlies rise. πŸŽ€

insert (const_iterator __pos, size_type __n, const _Tp & __x)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> iterator std::__profile::list< _Tp, _Allocator >::insert (const_iterator __pos, size_type __n, const _Tp & __x)

[inline] β€” Definition at line 356 of file profile/list.

count size_type __n plus the value. that's all five insert overloads, accounted for, none missing. πŸ‘‘


merge (list< _Tp, _Allocator > && __x)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> void std::__profile::list< _Tp, _Allocator >::merge (list< _Tp, _Allocator > && __x)

[inline] β€” Definition at line 549 of file profile/list.

returns void, takes an rvalue ref to another list< _Tp, _Allocator >. 🀝

merge (list< _Tp, _Allocator > && __x, _Compare __comp)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> template<class _Compare > void std::__profile::list< _Tp, _Allocator >::merge (list< _Tp, _Allocator > && __x, _Compare __comp)

[inline] β€” Definition at line 564 of file profile/list.

rvalue version with a comparator. note it says template<class _Compare > here, with class, not typename β€” copy it exactly, bestie. πŸ’…

merge (list< _Tp, _Allocator > & __x)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> void std::__profile::list< _Tp, _Allocator >::merge (list< _Tp, _Allocator > & __x)

[inline] β€” Definition at line 557 of file profile/list.

lvalue ref this time. same everything else. ✨

merge (list< _Tp, _Allocator > & __x, _Compare __comp)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> template<typename _Compare > void std::__profile::list< _Tp, _Allocator >::merge (list< _Tp, _Allocator > & __x, _Compare __comp)

[inline] β€” Definition at line 573 of file profile/list.

and the fourth merge uses template<typename _Compare > β€” yes, typename this time, not class. they're different. I checked. don't @ me. 😭

operator= (initializer_list< value_type > __l)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> list & std::__profile::list< _Tp, _Allocator >::operator= (initializer_list< value_type > __l)

[inline] β€” Definition at line 205 of file profile/list.

returns list & β€” a reference to the list itself. the assignment girlie. πŸ’–


pop_back ()

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> void std::__profile::list< _Tp, _Allocator >::pop_back ()

[inline], [noexcept] β€” Definition at line 309 of file profile/list.

pop_front ()

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> void std::__profile::list< _Tp, _Allocator >::pop_front ()

[inline], [noexcept] β€” Definition at line 302 of file profile/list.

back one at 309, front one at 302, both void, both [noexcept]. πŸ’…

push_front (const value_type & __x)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> void std::__profile::list< _Tp, _Allocator >::push_front (const value_type & __x)

[inline] β€” Definition at line 294 of file profile/list.

takes const value_type & __x, returns void, and β€” heads up β€” only [inline], no [noexcept] tag on this one. πŸ™ˆ

rbegin () const

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> const_reverse_iterator std::__profile::list< _Tp, _Allocator >::rbegin () const

[inline], [noexcept] β€” Definition at line 245 of file profile/list.

rbegin ()

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> reverse_iterator std::__profile::list< _Tp, _Allocator >::rbegin ()

[inline], [noexcept] β€” Definition at line 238 of file profile/list.

remove (const _Tp & __value)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> void std::__profile::list< _Tp, _Allocator >::remove (const _Tp & __value)

[inline] β€” Definition at line 483 of file profile/list.

void, one const _Tp & __value, [inline], no noexcept tag. ⭐

remove_if (_Predicate __pred)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> template<class _Predicate > void std::__profile::list< _Tp, _Allocator >::remove_if (_Predicate __pred)

[inline] β€” Definition at line 496 of file profile/list.

double template head, class _Predicate, one arg __pred, returns void. 🧚

rend () const

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> const_reverse_iterator std::__profile::list< _Tp, _Allocator >::rend () const

[inline], [noexcept] β€” Definition at line 256 of file profile/list.

rend ()

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> reverse_iterator std::__profile::list< _Tp, _Allocator >::rend ()

[inline], [noexcept] β€” Definition at line 252 of file profile/list.


splice (const_iterator __pos, list< _Tp, _Allocator > && __x)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> void std::__profile::list< _Tp, _Allocator >::splice (const_iterator __pos, list< _Tp, _Allocator > && __x)

[inline], [noexcept] β€” Definition at line 431 of file profile/list.

splice (const_iterator __pos, list< _Tp, _Allocator > && __x, const_iterator __first, const_iterator __last)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> void std::__profile::list< _Tp, _Allocator >::splice (const_iterator __pos, list< _Tp, _Allocator > && __x, const_iterator __first, const_iterator __last)

[inline], [noexcept] β€” Definition at line 464 of file profile/list.

splice (const_iterator __pos, list< _Tp, _Allocator > && __x, const_iterator __i)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> void std::__profile::list< _Tp, _Allocator >::splice (const_iterator __pos, list< _Tp, _Allocator > && __x, const_iterator __i)

[inline], [noexcept] β€” Definition at line 449 of file profile/list.

splice (const_iterator __pos, list< _Tp, _Allocator > & __x)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> void std::__profile::list< _Tp, _Allocator >::splice (const_iterator __pos, list< _Tp, _Allocator > & __x)

[inline], [noexcept] β€” Definition at line 439 of file profile/list.

splice (const_iterator __pos, list< _Tp, _Allocator > & __x, const_iterator __first, const_iterator __last)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> void std::__profile::list< _Tp, _Allocator >::splice (const_iterator __pos, list< _Tp, _Allocator > & __x, const_iterator __first, const_iterator __last)

[inline], [noexcept] β€” Definition at line 477 of file profile/list.

splice (const_iterator __pos, list< _Tp, _Allocator > & __x, const_iterator __i)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> void std::__profile::list< _Tp, _Allocator >::splice (const_iterator __pos, list< _Tp, _Allocator > & __x, const_iterator __i)

[inline] β€” Definition at line 443 of file profile/list.

okay bestie LOOK AT THIS ONE β€” that's the last splice (the lvalue + single const_iterator __i version) and it is the only splice without a [noexcept] tag. every other splice has it. this one does not. write that down. πŸ“


swap (list< _Tp, _Allocator > & __x)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> void std::__profile::list< _Tp, _Allocator >::swap (list< _Tp, _Allocator > & __x)

[inline], [noexcept] β€” Definition at line 413 of file profile/list.

unique ()

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> void std::__profile::list< _Tp, _Allocator >::unique ()

[inline] β€” Definition at line 509 of file profile/list.

no args, returns void, [inline] and that's it. πŸ’«

unique (_BinaryPredicate __binary_pred)

template<typename _Tp , typename _Allocator  = std::allocator<_Tp>> template<class _BinaryPredicate > void std::__profile::list< _Tp, _Allocator >::unique (_BinaryPredicate __binary_pred)

[inline] β€” Definition at line 529 of file profile/list.

the comparator version, class _BinaryPredicate, one arg __binary_pred, void, [inline]. and that's the last one on the list. 🫢


and that is every single member function the docs give you, all 48 of them, in order, signatures and line numbers intact, nothing dropped. to be continued… πŸ’œ

πŸ’– Member Data Documentation πŸ’–

okay bestie, last stretch, we're at the data members and there's literally just two of them, both inherited, both chillin' in the same file. no cap, they're twins. πŸ‘―

  • _M_list2slist_info β€” template<typename _List> a pointer of type __gnu_profile::__list2slist_info*, living on std::__profile::_List_profile< _List >. marked [inherited] bc she didn't come up with it herself, she got it from the family. Definition at line 48 of file profile/list. πŸŽ€
  • _M_list2vector_info β€” template<typename _List> a pointer of type __gnu_profile::__list2vector_info*, also hanging out on std::__profile::_List_profile< _List >, also [inherited]. Definition at line 49 of file profile/list. right below her sister. iconic placement fr fr. ✨

so yeah, both of these are just pointers sitting there as member data, one for the list-to-slist info and one for the list-to-vector info, and if you wanna go read the actual definitions they're one line apart in profile/list. the way that they're numbered 48 and 49 and nothing else... lowkey obsessed. πŸ’…


πŸ¦‹ Author πŸ¦‹

Generated automatically by Doxygen for libstdc++ from the source code.

like, nobody wrote this with their hands, bestie. a machine did it. Doxygen looked at the libstdc++ source code and just ✨manifested✨ this whole page. so if something reads a lil robotic in places, that's why. don't @ me, @ Doxygen. 😭


and that's a wrap on the whole page!! 🫢 this one came from the libstdc++ docs, auto-generated by Doxygen from the source code, and it's filed under the (3cxx) section β€” the footer line was giving very much "mangled title + version stamp" energy, so consider this the cute lil sign-off instead: source = libstdc++, generator = Doxygen, section = (3cxx), date = whatever the build stamped on it πŸ’– thanks for reading all three parts, you ate that. periodt. πŸ‘‘πŸŒΈ

πŸ“¦ where this page comes from