__gnu_cxx(3)
omg bestie π welcome to __gnu_cxx(3) from the Library Functions Manual β it's giving GNU extensions for public use, and we're doing this in eight parts because the lore is deep. This is part 1, and we're keeping every single detail, no cap. π«Ά
β¨ NAME β¨
__gnu_cxx β GNU extensions for public use. that's it, that's the name, periodt. π
π¦ SYNOPSIS π¦
okay so here's the whole map. namespaces, classes, typedefs, enumerations β all of it. buckle up. π
πΈ Namespaces πΈ
namespace __detailβ implementation details that are not part of the__gnu_cxxnamespace interface, so like, backstage only. πnamespace typelistβ GNU typelist extensions for public compile-time use, slay. β¨
π Classes π
struct __alloc_traitsβ a uniform interface to C++98 and C++11 allocators, iconic.struct __common_pool_policyβ policy for shared__poolobjects.class __mt_allocβ this is a fixed size (power of 2) allocator which β when compiled with thread support β will maintain one freelist per size per thread plus a global one. steps are taken to limit the per thread freelist sizes (by returning excess back to the global list).class __mt_alloc_baseβ base class for_Tpdependent member functions.struct __per_type_pool_policyβ policy for individual__poolobjects.class __poolβ data describing the underlying memory pool, parameterized on threading support.class __pool< false >β specialization for single thread.class __pool< true >β specialization for thread enabled, viagthreads.h.class __pool_allocβ allocator using a memory pool with a single lock.class __pool_alloc_baseβ base class for__pool_alloc.struct __pool_baseβ base class for pool object.class __rc_string_baseclass __scoped_lockβ scoped lock idiom.class __versa_stringβ template class__versa_string.struct _Casterstruct _Char_typesβ mapping from character type to associated types.class _ExtPtr_allocatorβ an example allocator which uses a non-standard pointer type.struct _Invalid_typeclass _Pointer_adapterclass _Relative_pointer_implβ a storage policy for use with_Pointer_adapter<>which stores the pointer's address as an offset value which is relative to its own address.class _Relative_pointer_impl< const _Tp >class _Std_pointer_implβ a storage policy for use with_Pointer_adapter<>which yields a standard pointer.class _Temporary_bufferstruct _Unqualified_typeclass allocatorβ the standard allocator, as per C++03 [20.4.1].struct annotate_baseβ base class for checking address and label information about allocations. create astd::mapbetween the allocated address (void*) and a datum for annotations, which are a pair of numbers corresponding to label and allocated size.class binary_composeβ An SGI extension.class bitmap_allocatorβ Bitmap Allocator, primary template.struct char_traitsβ base class used to implementstd::char_traits.struct characterβ a POD class that serves as a character abstraction class.struct condition_baseβ base struct for condition policy.struct constant_binary_funβ An SGI extension.struct constant_unary_funβ An SGI extension.struct constant_void_funβ An SGI extension.class debug_allocatorβ a meta-allocator with debugging bits.class enc_filebufβ it's theenc_filebufclass, bestie.struct encoding_char_traitsβencoding_char_traits, periodt.class encoding_stateβ extension to useiconvfor dealing with character encodings.struct equal_toβ one of the comparison functors.struct forced_errorβ thrown by utilities for testing exception safety.class free_listβ the free list class for managing chunks of memory to be given to and returned by thebitmap_allocator.class hash_mapclass hash_multimapclass hash_multisetclass hash_setstruct limit_conditionβ base class for incremental control and throw.class malloc_allocatorβ an allocator that usesmalloc.class new_allocatorβ an allocator that uses globalnew, as per C++03 [20.4.1].struct pairβ struct holding two objects (or references) of arbitrary type.struct project1stβ An SGI extension.struct project2ndβ An SGI extension.struct random_conditionβ base class for random probability control and throw.struct rb_treeclass recursive_init_errorβ exception thrown by__cxa_guard_acquire.class ropestruct select1stβ An SGI extension.struct select2ndβ An SGI extension.class slistclass stdio_filebufβ provides a layer of compatibility for C/POSIX.class stdio_sync_filebufβ provides a layer of compatibility for C.class subtractive_rngstruct temporary_bufferclass throw_allocator_baseβ allocator class with logging and exception generation control. intended to be used as anallocator_typein templatized code.struct throw_allocator_limitβ allocator throwing via limit condition.struct throw_allocator_randomβ allocator throwing via random condition.struct throw_value_baseβ class with exception generation control. intended to be used as avalue_typein templatized code.struct throw_value_limitβ type throwing via limit condition.struct throw_value_randomβ type throwing via random condition.class unary_composeβ An SGI extension.
π Typedefs π
typedef void(* __destroy_handler) (void *)template<typename _Tp> using __int_traitsβ convenience alias for__numeric_traits<integer-type>.typedef __versa_string< char, std::char_traits< char >, std::allocator< char >, __rc_string_base > __rc_stringtypedef __vstring __sso_stringtypedef __versa_string< char16_t, std::char_traits< char16_t >, std::allocator< char16_t >, __rc_string_base > __u16rc_stringtypedef __u16vstring __u16sso_stringtypedef __versa_string< char16_t > __u16vstringtypedef __versa_string< char32_t, std::char_traits< char32_t >, std::allocator< char32_t >, __rc_string_base > __u32rc_stringtypedef __u32vstring __u32sso_stringtypedef __versa_string< char32_t > __u32vstringtypedef __versa_string< char > __vstringtypedef __versa_string< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t >, __rc_string_base > __wrc_stringtypedef __wvstring __wsso_stringtypedef __versa_string< wchar_t > __wvstringtypedef rope< char > cropetypedef __SIZE_TYPE__ size_ttypedef rope< wchar_t > wrope
π Enumerations π
enum { _S_num_primes }enum _Lock_policy { _S_single, _S_mutex, _S_atomic }
Functions β¨π
okay bestie, deep breath β this list is long, but it's literally just every free function hanging out in the __gnu_cxx namespace, listed with its exact signature so you can find your fave. no skimming, no skipping, we're doing all of them. π«Ά
__atomic_addβvoid __atomic_add (volatile _Atomic_word *__mem, int __val)__atomic_add_dispatchβvoid __atomic_add_dispatch (_Atomic_word *__mem, int __val)__atomic_add_singleβvoid __atomic_add_single (_Atomic_word *__mem, int __val)__aux_require_boolean_exprβtemplate<class _Tp> void __aux_require_boolean_expr (const _Tp &__t)__const_pointer_castβtemplate<typename _ToType, typename _FromType> _ToType __const_pointer_cast (_FromType *__arg)__const_pointer_castβtemplate<typename _ToType, typename _FromType> _ToType __const_pointer_cast (const _FromType &__arg)__copy_nβtemplate<typename _InputIterator, typename _Size, typename _OutputIterator> std::pair< _InputIterator, _OutputIterator > __copy_n (_InputIterator __first, _Size __count, _OutputIterator __result, std::input_iterator_tag)__copy_nβtemplate<typename _RAIterator, typename _Size, typename _OutputIterator> std::pair< _RAIterator, _OutputIterator > __copy_n (_RAIterator __first, _Size __count, _OutputIterator __result, std::random_access_iterator_tag)__distanceβtemplate<typename _InputIterator, typename _Distance> void __distance (_InputIterator __first, _InputIterator __last, _Distance &__n, std::input_iterator_tag)__distanceβtemplate<typename _RandomAccessIterator, typename _Distance> void __distance (_RandomAccessIterator __first, _RandomAccessIterator __last, _Distance &__n, std::random_access_iterator_tag)__dynamic_pointer_castβtemplate<typename _ToType, typename _FromType> _ToType __dynamic_pointer_cast (_FromType *__arg)__dynamic_pointer_castβtemplate<typename _ToType, typename _FromType> _ToType __dynamic_pointer_cast (const _FromType &__arg)__error_type_must_be_a_signed_integer_typeβvoid __error_type_must_be_a_signed_integer_type ()__error_type_must_be_an_integer_typeβvoid __error_type_must_be_an_integer_type ()__error_type_must_be_an_unsigned_integer_typeβvoid __error_type_must_be_an_unsigned_integer_type ()__exchange_and_addβ_Atomic_word __exchange_and_add (volatile _Atomic_word *__mem, int __val)__exchange_and_add_dispatchβ_Atomic_word __exchange_and_add_dispatch (_Atomic_word *__mem, int __val)__exchange_and_add_singleβ_Atomic_word __exchange_and_add_single (_Atomic_word *__mem, int __val)__function_requiresβtemplate<class _Concept> constexpr void __function_requires ()__is_null_pointerβtemplate<typename _Type> constexpr bool __is_null_pointer (_Type *__ptr)__is_null_pointerβtemplate<typename _Type> constexpr bool __is_null_pointer (_Type)__is_null_pointerβconstexpr bool __is_null_pointer (std::nullptr_t)__is_single_threadedβbool __is_single_threaded () noexcept__lexicographical_compare_3wayβtemplate<typename _InputIterator1, typename _InputIterator2> int __lexicographical_compare_3way (_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2)__lexicographical_compare_3wayβint __lexicographical_compare_3way (const char *__first1, const char *__last1, const char *__first2, const char *__last2)__lexicographical_compare_3wayβint __lexicographical_compare_3way (const unsigned char *__first1, const unsigned char *__last1, const unsigned char *__first2, const unsigned char *__last2)__medianβtemplate<typename _Tp> const _Tp & __median (const _Tp &__a, const _Tp &__b, const _Tp &__c)β Find the median of three values. π__medianβtemplate<typename _Tp, typename _Compare> const _Tp & __median (const _Tp &__a, const _Tp &__b, const _Tp &__c, _Compare __comp)β Find the median of three values using a predicate for comparison. π__mutable_reference_atβcrope::reference __mutable_reference_at (crope &__c, std::size_t __i)__powerβtemplate<typename _Tp, typename _Integer> _Tp __power (_Tp __x, _Integer __n)__powerβtemplate<typename _Tp, typename _Integer, typename _MonoidOperation> _Tp __power (_Tp __x, _Integer __n, _MonoidOperation __monoid_op)__random_sampleβtemplate<typename _InputIterator, typename _RandomAccessIterator, typename _RandomNumberGenerator, typename _Distance> _RandomAccessIterator __random_sample (_InputIterator __first, _InputIterator __last, _RandomAccessIterator __out, _RandomNumberGenerator &__rand, const _Distance __n)__random_sampleβtemplate<typename _InputIterator, typename _RandomAccessIterator, typename _Distance> _RandomAccessIterator __random_sample (_InputIterator __first, _InputIterator __last, _RandomAccessIterator __out, const _Distance __n)__reinterpret_pointer_castβtemplate<typename _ToType, typename _FromType> _ToType __reinterpret_pointer_cast (_FromType *__arg)__reinterpret_pointer_castβtemplate<typename _ToType, typename _FromType> _ToType __reinterpret_pointer_cast (const _FromType &__arg)__slist_make_linkβ_Slist_node_base * __slist_make_link (_Slist_node_base *__prev_node, _Slist_node_base *__new_node)__slist_previousβ_Slist_node_base * __slist_previous (_Slist_node_base *__head, const _Slist_node_base *__node)__slist_previousβconst _Slist_node_base * __slist_previous (const _Slist_node_base *__head, const _Slist_node_base *__node)__slist_reverseβ_Slist_node_base * __slist_reverse (_Slist_node_base *__node)__slist_sizeβstd::size_t __slist_size (_Slist_node_base *__node)__slist_splice_afterβvoid __slist_splice_after (_Slist_node_base *__pos, _Slist_node_base *__before_first, _Slist_node_base *__before_last)__slist_splice_afterβvoid __slist_splice_after (_Slist_node_base *__pos, _Slist_node_base *__head)__static_pointer_castβtemplate<typename _ToType, typename _FromType> _ToType __static_pointer_cast (_FromType *__arg)__static_pointer_castβtemplate<typename _ToType, typename _FromType> _ToType __static_pointer_cast (const _FromType &__arg)__stl_hash_stringβsize_t __stl_hash_string (const char *__s)__stl_next_primeβunsigned long __stl_next_prime (unsigned long __n)__stoaβtemplate<typename _TRet, typename _Ret = _TRet, typename _CharT, typename... _Base> _Ret __stoa (_TRet(*__convf)(const _CharT *, _CharT **, _Base...), const char *__name, const _CharT *__str, std::size_t *__idx, _Base... __base)__throw_concurrence_lock_errorβvoid __throw_concurrence_lock_error ()__throw_concurrence_unlock_errorβvoid __throw_concurrence_unlock_error ()__throw_forced_errorβvoid __throw_forced_error ()__to_xstringβtemplate<typename _String, typename _CharT = typename _String::value_type> _String __to_xstring (int(*__convf)(_CharT *, std::size_t, const _CharT *, __builtin_va_list), std::size_t __n, const _CharT *__fmt,...)__uninitialized_copy_nβtemplate<typename _InputIter, typename _Size, typename _ForwardIter> std::pair< _InputIter, _ForwardIter > __uninitialized_copy_n (_InputIter __first, _Size __count, _ForwardIter __result)__uninitialized_copy_nβtemplate<typename _InputIter, typename _Size, typename _ForwardIter> std::pair< _InputIter, _ForwardIter > __uninitialized_copy_n (_InputIter __first, _Size __count, _ForwardIter __result, std::input_iterator_tag)__uninitialized_copy_nβtemplate<typename _RandomAccessIter, typename _Size, typename _ForwardIter> std::pair< _RandomAccessIter, _ForwardIter > __uninitialized_copy_n (_RandomAccessIter __first, _Size __count, _ForwardIter __result, std::random_access_iterator_tag)__uninitialized_copy_n_aβtemplate<typename _InputIter, typename _Size, typename _ForwardIter, typename _Allocator> std::pair< _InputIter, _ForwardIter > __uninitialized_copy_n_a (_InputIter __first, _Size __count, _ForwardIter __result, _Allocator __alloc)__uninitialized_copy_n_aβtemplate<typename _InputIter, typename _Size, typename _ForwardIter, typename _Tp> std::pair< _InputIter, _ForwardIter > __uninitialized_copy_n_a (_InputIter __first, _Size __count, _ForwardIter __result, std::allocator< _Tp >)__verbose_terminate_handlerβvoid __verbose_terminate_handler ()β bestie this one is literally the replacement for the standard terminate_handler, and it prints more information about the terminating exception (if any) on stderr. so when everything's on fire π₯, at least you get receipts._Bit_scan_forwardβstd::size_t _Bit_scan_forward (std::size_t __num)β the generic version of thebsfinstruction. iconic lowkey. β
_Destroy_constβtemplate<typename _ForwardIterator, typename _Allocator> void _Destroy_const (_ForwardIterator __first, _ForwardIterator __last, _Allocator __alloc)_Destroy_constβtemplate<typename _ForwardIterator, typename _Tp> void _Destroy_const (_ForwardIterator __first, _ForwardIterator __last, std::allocator< _Tp >)_Rope_fillβtemplate<class _CharT, class _Traits> void _Rope_fill (std::basic_ostream< _CharT, _Traits > &__o, std::size_t __n)_Rope_is_simpleβtemplate<class _CharT> bool _Rope_is_simple (_CharT *)_Rope_is_simpleβbool _Rope_is_simple (char *)_Rope_is_simpleβbool _Rope_is_simple (wchar_t *)_Rope_rotateβtemplate<class _Rope_iterator> void _Rope_rotate (_Rope_iterator __first, _Rope_iterator __middle, _Rope_iterator __last)_S_cond_store_eosβtemplate<class _CharT> void _S_cond_store_eos (_CharT &)_S_cond_store_eosβvoid _S_cond_store_eos (char &__c)_S_cond_store_eosβvoid _S_cond_store_eos (wchar_t &__c)_S_eosβtemplate<class _CharT> _CharT _S_eos (_CharT *)_S_is_basic_char_typeβtemplate<class _CharT> bool _S_is_basic_char_type (_CharT *)_S_is_basic_char_typeβbool _S_is_basic_char_type (char *)_S_is_basic_char_typeβbool _S_is_basic_char_type (wchar_t *)_S_is_one_byte_char_typeβtemplate<class _CharT> bool _S_is_one_byte_char_type (_CharT *)_S_is_one_byte_char_typeβbool _S_is_one_byte_char_type (char *)
airy_aiβtemplate<typename _Tp> __gnu_cxx::__promote< _Tp >::__type airy_ai (_Tp __x)airy_aifβfloat airy_aif (float __x)airy_ailβlong double airy_ail (long double __x)airy_biβtemplate<typename _Tp> __gnu_cxx::__promote< _Tp >::__type airy_bi (_Tp __x)airy_bifβfloat airy_bif (float __x)airy_bilβlong double airy_bil (long double __x)compose1βtemplate<class _Operation1, class _Operation2> unary_compose< _Operation1, _Operation2 > compose1 (const _Operation1 &__fn1, const _Operation2 &__fn2)β an SGI extension β¨compose2βtemplate<class _Operation1, class _Operation2, class _Operation3> binary_compose< _Operation1, _Operation2, _Operation3 > compose2 (const _Operation1 &__fn1, const _Operation2 &__fn2, const _Operation3 &__fn3)β an SGI extension β¨conf_hypergβtemplate<typename _Tpa, typename _Tpc, typename _Tp> __gnu_cxx::__promote_3< _Tpa, _Tpc, _Tp >::__type conf_hyperg (_Tpa __a, _Tpc __c, _Tp __x)conf_hypergfβfloat conf_hypergf (float __a, float __c, float __x)conf_hyperglβlong double conf_hypergl (long double __a, long double __c, long double __x)constant0βtemplate<class _Result> constant_void_fun< _Result > constant0 (const _Result &__val)β an SGI extension β¨constant1βtemplate<class _Result> constant_unary_fun< _Result, _Result > constant1 (const _Result &__val)β an SGI extension β¨constant2βtemplate<class _Result> constant_binary_fun< _Result, _Result, _Result > constant2 (const _Result &__val)β an SGI extension β¨copy_nβtemplate<typename _InputIterator, typename _Size, typename _OutputIterator> std::pair< _InputIterator, _OutputIterator > copy_n (_InputIterator __first, _Size __count, _OutputIterator __result)β copies the range[first,first+count)into[result,result+count). no cap, that's the whole job. π¦countβtemplate<typename _InputIterator, typename _Tp, typename _Size> void count (_InputIterator __first, _InputIterator __last, const _Tp &__value, _Size &__n)count_ifβtemplate<typename _InputIterator, typename _Predicate, typename _Size> void count_if (_InputIterator __first, _InputIterator __last, _Predicate __pred, _Size &__n)distanceβtemplate<typename _InputIterator, typename _Distance> void distance (_InputIterator __first, _InputIterator __last, _Distance &__n)hypergβtemplate<typename _Tpa, typename _Tpb, typename _Tpc, typename _Tp> __gnu_cxx::__promote_4< _Tpa, _Tpb, _Tpc, _Tp >::__type hyperg (_Tpa __a, _Tpb __b, _Tpc __c, _Tp __x)hypergfβfloat hypergf (float __a, float __b, float __c, float __x)hyperglβlong double hypergl (long double __a, long double __b, long double __c, long double __x)identity_elementβtemplate<class _Tp> _Tp identity_element (std::multiplies< _Tp >)
and that's the whole Functions list, every single overload, nothing skipped, we ate and left zero crumbs π keep scrolling bestie, there's more where this came from πΈ
(quick heads-up bestie: the entry from the last chunk wraps up with An SGI extension . β and now we're right back in the alphabetical grind π«Ά)
β¨ identity_element β¨
template<class _Tp> _Tp identity_element (std::plus< _Tp >)
An SGI extension . That's the whole blurb. Short queen, says what it needs to say. π
π iota
template<typename _ForwardIterator, typename _Tp> constexpr void iota (_ForwardIterator __first, _ForwardIterator __last, _Tp __value)
Create a range of sequentially increasing values. So you hand it __first, __last and a starting __value, and it just keeps the numbers going up one after another through the whole range. Little range-glow-up moment, honestly. β¨
πΈ is_heap
template<typename _RAIter> constexpr bool is_heap (_RAIter, _RAIter)
πΈ is_sorted
template<typename _FIter> constexpr bool is_sorted (_FIter, _FIter)
No blurb for these two, so no invented blurb from me β signatures only, bestie. I refuse to make stuff up about a manpage. π«Ά
π₯ lexicographical_compare_3way
template<typename _InputIterator1, typename _InputIterator2> int lexicographical_compare_3way (_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2)
memcmp on steroids. Periodt. That's genuinely the description, and honestly? Iconic. π
π mem_fun1
template<class _Ret, class _Tp, class _Arg> std::const_mem_fun1_t< _Ret, _Tp, _Arg > mem_fun1 (_Ret(_Tp::*__f)(_Arg) const)
template<class _Ret, class _Tp, class _Arg> std::mem_fun1_t< _Ret, _Tp, _Arg > mem_fun1 (_Ret(_Tp::*__f)(_Arg))
π mem_fun1_ref
template<class _Ret, class _Tp, class _Arg> std::const_mem_fun1_ref_t< _Ret, _Tp, _Arg > mem_fun1_ref (_Ret(_Tp::*__f)(_Arg) const)
template<class _Ret, class _Tp, class _Arg> std::mem_fun1_ref_t< _Ret, _Tp, _Arg > mem_fun1_ref (_Ret(_Tp::*__f)(_Arg))
The const twins and the non-const twins, side by side, matching outfits. Very demure, very mindful. π
π« operator!= β the "not equal" committee π«
Okay so this is the big one. Nineteen overloads of "are these two things NOT the same." Buckle up. π
_Tp1on the left,_Pointer_adapter< _Tp2 >on the right:
template<typename _Tp1, typename _Tp2> bool operator!= (_Tp1 __lhs, const _Pointer_adapter< _Tp2 > &__rhs)
- versa_string vs versa_string β Test difference of two strings. π¦
template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> bool operator!= (const __versa_string< _CharT, _Traits, _Alloc, _Base > &__lhs, const __versa_string< _CharT, _Traits, _Alloc, _Base > &__rhs)
- versa_string vs C string β Test difference of string and C string. β¨
template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> bool operator!= (const __versa_string< _CharT, _Traits, _Alloc, _Base > &__lhs, const _CharT *__rhs)
- C string vs versa_string β Test difference of C string and string. β¨
template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> bool operator!= (const _CharT *__lhs, const __versa_string< _CharT, _Traits, _Alloc, _Base > &__rhs)
_Pointer_adaptervs_Pointer_adapter, same_Tp:
template<typename _Tp> bool operator!= (const _Pointer_adapter< _Tp > &__lhs, const _Pointer_adapter< _Tp > &__rhs)
_Pointer_adaptervs a plainint:
template<typename _Tp> bool operator!= (const _Pointer_adapter< _Tp > &__lhs, int __rhs)
_Pointer_adapter< _Tp1 >vs any_Tp2:
template<typename _Tp1, typename _Tp2> bool operator!= (const _Pointer_adapter< _Tp1 > &__lhs, _Tp2 __rhs)
_Pointer_adapter< _Tp1 >vs_Pointer_adapter< _Tp2 >:
template<typename _Tp1, typename _Tp2> bool operator!= (const _Pointer_adapter< _Tp1 > &__lhs, const _Pointer_adapter< _Tp2 > &__rhs)
- rope char proxy vs rope char proxy:
template<class _CharT, class _Alloc> bool operator!= (const _Rope_char_ptr_proxy< _CharT, _Alloc > &__x, const _Rope_char_ptr_proxy< _CharT, _Alloc > &__y)
- rope const iterator vs rope const iterator:
template<class _CharT, class _Alloc> bool operator!= (const _Rope_const_iterator< _CharT, _Alloc > &__x, const _Rope_const_iterator< _CharT, _Alloc > &__y)
- rope iterator vs rope iterator:
template<class _CharT, class _Alloc> bool operator!= (const _Rope_iterator< _CharT, _Alloc > &__x, const _Rope_iterator< _CharT, _Alloc > &__y)
- hash_map vs hash_map:
template<class _Key, class _Tp, class _HashFn, class _EqlKey, class _Alloc> bool operator!= (const hash_map< _Key, _Tp, _HashFn, _EqlKey, _Alloc > &__hm1, const hash_map< _Key, _Tp, _HashFn, _EqlKey, _Alloc > &__hm2)
- hash_multimap vs hash_multimap:
template<class _Key, class _Tp, class _HF, class _EqKey, class _Alloc> bool operator!= (const hash_multimap< _Key, _Tp, _HF, _EqKey, _Alloc > &__hm1, const hash_multimap< _Key, _Tp, _HF, _EqKey, _Alloc > &__hm2)
- hash_multiset vs hash_multiset:
template<class _Val, class _HashFcn, class _EqualKey, class _Alloc> bool operator!= (const hash_multiset< _Val, _HashFcn, _EqualKey, _Alloc > &__hs1, const hash_multiset< _Val, _HashFcn, _EqualKey, _Alloc > &__hs2)
- hash_set vs hash_set:
template<class _Value, class _HashFcn, class _EqualKey, class _Alloc> bool operator!= (const hash_set< _Value, _HashFcn, _EqualKey, _Alloc > &__hs1, const hash_set< _Value, _HashFcn, _EqualKey, _Alloc > &__hs2)
- hashtable vs hashtable:
template<class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All> bool operator!= (const hashtable< _Val, _Key, _HF, _Ex, _Eq, _All > &__ht1, const hashtable< _Val, _Key, _HF, _Ex, _Eq, _All > &__ht2)
- rope vs rope:
template<class _CharT, class _Alloc> bool operator!= (const rope< _CharT, _Alloc > &__x, const rope< _CharT, _Alloc > &__y)
- slist vs slist:
template<class _Tp, class _Alloc> bool operator!= (const slist< _Tp, _Alloc > &_SL1, const slist< _Tp, _Alloc > &_SL2)
- a plain
inton the left,_Pointer_adapter< _Tp >on the right:
template<typename _Tp> bool operator!= (int __lhs, const _Pointer_adapter< _Tp > &__rhs)
Nineteen. Counted them. Not one skipped, bestie β that's the whole roster. π
βοΈ operator* (for throw_value_base)
template<typename _Cond> throw_value_base< _Cond > operator* (const throw_value_base< _Cond > &__a, const throw_value_base< _Cond > &__b)
No description on this one, so I'm not inventing a personality for it beyond "here it is." π«‘
β operator+ β the concatenation cinematic universe π
Buckle in, this is the longest set on the whole page. Twenty overloads. Twenty. π
versa_string operator+
- rvalue versa_string + rvalue versa_string:
template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> __versa_string< _CharT, _Traits, _Alloc, _Base > operator+ (__versa_string< _CharT, _Traits, _Alloc, _Base > &&__lhs, __versa_string< _CharT, _Traits, _Alloc, _Base > &&__rhs)
- rvalue versa_string + a single character:
template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> __versa_string< _CharT, _Traits, _Alloc, _Base > operator+ (__versa_string< _CharT, _Traits, _Alloc, _Base > &&__lhs, _CharT __rhs)
- rvalue versa_string + const versa_string:
template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> __versa_string< _CharT, _Traits, _Alloc, _Base > operator+ (__versa_string< _CharT, _Traits, _Alloc, _Base > &&__lhs, const __versa_string< _CharT, _Traits, _Alloc, _Base > &__rhs)
- rvalue versa_string + C string:
template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> __versa_string< _CharT, _Traits, _Alloc, _Base > operator+ (__versa_string< _CharT, _Traits, _Alloc, _Base > &&__lhs, const _CharT *__rhs)
- single character + rvalue versa_string:
template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> __versa_string< _CharT, _Traits, _Alloc, _Base > operator+ (_CharT __lhs, __versa_string< _CharT, _Traits, _Alloc, _Base > &&__rhs)
- single character + const versa_string β Concatenate character and string. π
template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> __versa_string< _CharT, _Traits, _Alloc, _Base > operator+ (_CharT __lhs, const __versa_string< _CharT, _Traits, _Alloc, _Base > &__rhs)
- const versa_string + rvalue versa_string:
template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> __versa_string< _CharT, _Traits, _Alloc, _Base > operator+ (const __versa_string< _CharT, _Traits, _Alloc, _Base > &__lhs, __versa_string< _CharT, _Traits, _Alloc, _Base > &&__rhs)
- const versa_string + a single character β Concatenate string and character. π
template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> __versa_string< _CharT, _Traits, _Alloc, _Base > operator+ (const __versa_string< _CharT, _Traits, _Alloc, _Base > &__lhs, _CharT __rhs)
- const versa_string + const versa_string β Concatenate two strings. π
template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> __versa_string< _CharT, _Traits, _Alloc, _Base > operator+ (const __versa_string< _CharT, _Traits, _Alloc, _Base > &__lhs, const __versa_string< _CharT, _Traits, _Alloc, _Base > &__rhs)
- const versa_string + C string β Concatenate string and C string. π
template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> __versa_string< _CharT, _Traits, _Alloc, _Base > operator+ (const __versa_string< _CharT, _Traits, _Alloc, _Base > &__lhs, const _CharT *__rhs)
- C string + rvalue versa_string:
template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> __versa_string< _CharT, _Traits, _Alloc, _Base > operator+ (const _CharT *__lhs, __versa_string< _CharT, _Traits, _Alloc, _Base > &&__rhs)
- C string + const versa_string β Concatenate C string and string. π
template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> __versa_string< _CharT, _Traits, _Alloc, _Base > operator+ (const _CharT *__lhs, const __versa_string< _CharT, _Traits, _Alloc, _Base > &__rhs)
rope / iterator operator+
- rope const iterator +
std::ptrdiff_t:
template<class _CharT, class _Alloc> _Rope_const_iterator< _CharT, _Alloc > operator+ (const _Rope_const_iterator< _CharT, _Alloc > &__x, std::ptrdiff_t __n)
- rope iterator +
std::ptrdiff_t:
template<class _CharT, class _Alloc> _Rope_iterator< _CharT, _Alloc > operator+ (const _Rope_iterator< _CharT, _Alloc > &__x, std::ptrdiff_t __n)
- rope + a character:
template<class _CharT, class _Alloc> rope< _CharT, _Alloc > operator+ (const rope< _CharT, _Alloc > &__left, _CharT __right)
- rope + C string:
template<class _CharT, class _Alloc> rope< _CharT, _Alloc > operator+ (const rope< _CharT, _Alloc > &__left, const _CharT *__right)
- rope + rope:
template<class _CharT, class _Alloc> rope< _CharT, _Alloc > operator+ (const rope< _CharT, _Alloc > &__left, const rope< _CharT, _Alloc > &__right)
throw_value_base operator+
template<typename _Cond> throw_value_base< _Cond > operator+ (const throw_value_base< _Cond > &__a, const throw_value_base< _Cond > &__b)
std::ptrdiff_t on the left operator+
std::ptrdiff_t+ rope const iterator:
template<class _CharT, class _Alloc> _Rope_const_iterator< _CharT, _Alloc > operator+ (std::ptrdiff_t __n, const _Rope_const_iterator< _CharT, _Alloc > &__x)
std::ptrdiff_t+ rope iterator:
template<class _CharT, class _Alloc> _Rope_iterator< _CharT, _Alloc > operator+ (std::ptrdiff_t __n, const _Rope_iterator< _CharT, _Alloc > &__x)
Twenty overloads. Twenty. And you thought your group chat had a lot of plus-ones. π
β= operator+= (rope only, but make it count) π§΅
- rope
+=a character:
template<class _CharT, class _Alloc> rope< _CharT, _Alloc > & operator+= (rope< _CharT, _Alloc > &__left, _CharT __right)
- rope
+=a C string:
template<class _CharT, class _Alloc> rope< _CharT, _Alloc > & operator+= (rope< _CharT, _Alloc > &__left, const _CharT *__right)
- rope
+=another rope:
template<class _CharT, class _Alloc> rope< _CharT, _Alloc > & operator+= (rope< _CharT, _Alloc > &__left, const rope< _CharT, _Alloc > &__right)
β operator-
- rope const iterator minus rope const iterator β
std::ptrdiff_t:
template<class _CharT, class _Alloc> std::ptrdiff_t operator- (const _Rope_const_iterator< _CharT, _Alloc > &__x, const _Rope_const_iterator< _CharT, _Alloc > &__y)
- rope const iterator minus
std::ptrdiff_t:
template<class _CharT, class _Alloc> _Rope_const_iterator< _CharT, _Alloc > operator- (const _Rope_const_iterator< _CharT, _Alloc > &__x, std::ptrdiff_t __n)
- rope iterator minus rope iterator β
std::ptrdiff_t:
template<class _CharT, class _Alloc> std::ptrdiff_t operator- (const _Rope_iterator< _CharT, _Alloc > &__x, const _Rope_iterator< _CharT, _Alloc > &__y)
- rope iterator minus
std::ptrdiff_t:
template<class _CharT, class _Alloc> _Rope_iterator< _CharT, _Alloc > operator- (const _Rope_iterator< _CharT, _Alloc > &__x, std::ptrdiff_t __n)
throw_value_baseminusthrow_value_base:
template<typename _Cond> throw_value_base< _Cond > operator- (const throw_value_base< _Cond > &__a, const throw_value_base< _Cond > &__b)
and that's where this chunk cuts off, bestie β the alphabet keeps going and so do we, no wrap-up, no goodbye. π
okay bestie we're deep in the operator zone now π
this is the part of the page where literally every comparison and print operator that lives in this namespace comes out to say hi. the whole operator<, operator<<, operator<= and operator== girl gang, one by one, no skips, no shortcuts. grab a snack, we're doing all of them π
πΈ operator< β the "who comes first" committee πΈ
template<typename _Tp1, typename _Tp2> bool operator< (_Tp1 __lhs, const _Pointer_adapter< _Tp2 > &__rhs)template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> bool operator< (const __versa_string< _CharT, _Traits, _Alloc, _Base > &__lhs, const __versa_string< _CharT, _Traits, _Alloc, _Base > &__rhs)β checks if one string precedes another string πtemplate<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> bool operator< (const __versa_string< _CharT, _Traits, _Alloc, _Base > &__lhs, const _CharT *__rhs)β checks if a string precedes a C string β¨template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> bool operator< (const _CharT *__lhs, const __versa_string< _CharT, _Traits, _Alloc, _Base > &__rhs)β checks if a C string precedes a string πtemplate<typename _Tp1, typename _Tp2> bool operator< (const _Pointer_adapter< _Tp1 > &__lhs, _Tp2 __rhs)template<typename _Tp1, typename _Tp2> bool operator< (const _Pointer_adapter< _Tp1 > &__lhs, const _Pointer_adapter< _Tp2 > &__rhs)template<class _CharT, class _Alloc> bool operator< (const _Rope_const_iterator< _CharT, _Alloc > &__x, const _Rope_const_iterator< _CharT, _Alloc > &__y)template<class _CharT, class _Alloc> bool operator< (const _Rope_iterator< _CharT, _Alloc > &__x, const _Rope_iterator< _CharT, _Alloc > &__y)template<typename _Value, typename _Int, typename _St> bool operator< (const character< _Value, _Int, _St > &lhs, const character< _Value, _Int, _St > &rhs)template<class _CharT, class _Alloc> bool operator< (const rope< _CharT, _Alloc > &__left, const rope< _CharT, _Alloc > &__right)template<class _Tp, class _Alloc> bool operator< (const slist< _Tp, _Alloc > &_SL1, const slist< _Tp, _Alloc > &_SL2)template<typename _Cond> bool operator< (const throw_value_base< _Cond > &__a, const throw_value_base< _Cond > &__b)
π¦ operator<< β the print-it-out besties π¦
these ones take a stream and a thing and send that thing straight into the stream. it's giving "tell the terminal everything" energy, and honestly? iconic.
template<class _CharT, class _Traits, class _Alloc> std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__o, const rope< _CharT, _Alloc > &__r)template<typename _RealType, typename _CharT, typename _Traits> std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const __gnu_cxx::beta_distribution< _RealType > &__x)template<typename _UIntType, typename _CharT, typename _Traits> std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const __gnu_cxx::hypergeometric_distribution< _UIntType > &__x)template<size_t _Dimen, typename _RealType, typename _CharT, typename _Traits> std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const __gnu_cxx::normal_mv_distribution< _Dimen, _RealType > &__x)template<typename _UIntType, size_t __m, size_t __pos1, size_t __sl1, size_t __sl2, size_t __sr1, size_t __sr2, uint32_t __msk1, uint32_t __msk2, uint32_t __msk3, uint32_t __msk4, uint32_t __parity1, uint32_t __parity2, uint32_t __parity3, uint32_t __parity4, typename _CharT, typename _Traits> std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const __gnu_cxx::simd_fast_mersenne_twister_engine< _UIntType, __m, __pos1, __sl1, __sl2, __sr1, __sr2, __msk1, __msk2, __msk3, __msk4, __parity1, __parity2, __parity3, __parity4 > &__x)template<typename _RealType, typename _CharT, typename _Traits> std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const __gnu_cxx::triangular_distribution< _RealType > &__x)template<std::size_t _Dimen, typename _RealType, typename _CharT, typename _Traits> std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const __gnu_cxx::uniform_inside_sphere_distribution< _Dimen, _RealType > &__x)template<std::size_t _Dimen, typename _RealType, typename _CharT, typename _Traits> std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const __gnu_cxx::uniform_on_sphere_distribution< _Dimen, _RealType > &__x)template<typename _RealType, typename _CharT, typename _Traits> std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const __gnu_cxx::von_mises_distribution< _RealType > &__x)template<typename _CharT, typename _Traits, typename _StoreT> std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const _Pointer_adapter< _StoreT > &__p)template<typename _RealType, typename _CharT, typename _Traits> std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const arcsine_distribution< _RealType > &__x)template<typename _RealType, typename _CharT, typename _Traits> std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const hoyt_distribution< _RealType > &__x)template<typename _RealType, typename _CharT, typename _Traits> std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const k_distribution< _RealType > &__x)template<typename _RealType, typename _CharT, typename _Traits> std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const logistic_distribution< _RealType > &__x)template<typename _RealType, typename _CharT, typename _Traits> std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const nakagami_distribution< _RealType > &__x)template<typename _RealType, typename _CharT, typename _Traits> std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const pareto_distribution< _RealType > &__x)template<typename _RealType, typename _CharT, typename _Traits> std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const rice_distribution< _RealType > &__x)std::ostream & operator<< (std::ostream &os, const annotate_base &__b)
π operator<= β "doesn't follow", very demure π
template<typename _Tp1, typename _Tp2> bool operator<= (_Tp1 __lhs, const _Pointer_adapter< _Tp2 > &__rhs)template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> bool operator<= (const __versa_string< _CharT, _Traits, _Alloc, _Base > &__lhs, const __versa_string< _CharT, _Traits, _Alloc, _Base > &__rhs)β checks if a string doesn't follow another string πtemplate<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> bool operator<= (const __versa_string< _CharT, _Traits, _Alloc, _Base > &__lhs, const _CharT *__rhs)β checks if a string doesn't follow a C string πtemplate<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> bool operator<= (const _CharT *__lhs, const __versa_string< _CharT, _Traits, _Alloc, _Base > &__rhs)β checks if a C string doesn't follow a string βtemplate<typename _Tp> bool operator<= (const _Pointer_adapter< _Tp > &__lhs, const _Pointer_adapter< _Tp > &__rhs)template<typename _Tp1, typename _Tp2> bool operator<= (const _Pointer_adapter< _Tp1 > &__lhs, _Tp2 __rhs)template<typename _Tp1, typename _Tp2> bool operator<= (const _Pointer_adapter< _Tp1 > &__lhs, const _Pointer_adapter< _Tp2 > &__rhs)template<class _CharT, class _Alloc> bool operator<= (const _Rope_const_iterator< _CharT, _Alloc > &__x, const _Rope_const_iterator< _CharT, _Alloc > &__y)template<class _CharT, class _Alloc> bool operator<= (const _Rope_iterator< _CharT, _Alloc > &__x, const _Rope_iterator< _CharT, _Alloc > &__y)template<class _CharT, class _Alloc> bool operator<= (const rope< _CharT, _Alloc > &__x, const rope< _CharT, _Alloc > &__y)template<class _Tp, class _Alloc> bool operator<= (const slist< _Tp, _Alloc > &_SL1, const slist< _Tp, _Alloc > &_SL2)
β¨ operator== β the equivalence girlies, they ate β¨
template<typename _Tp1, typename _Tp2> bool operator== (_Tp1 __lhs, const _Pointer_adapter< _Tp2 > &__rhs)template<size_t _Dimen, typename _RealType> bool operator== (const __gnu_cxx::normal_mv_distribution< _Dimen, _RealType > &__d1, const __gnu_cxx::normal_mv_distribution< _Dimen, _RealType > &__d2)template<typename _UIntType, size_t __m, size_t __pos1, size_t __sl1, size_t __sl2, size_t __sr1, size_t __sr2, uint32_t __msk1, uint32_t __msk2, uint32_t __msk3, uint32_t __msk4, uint32_t __parity1, uint32_t __parity2, uint32_t __parity3, uint32_t __parity4> bool operator== (const __gnu_cxx::simd_fast_mersenne_twister_engine< _UIntType, __m, __pos1, __sl1, __sl2, __sr1, __sr2, __msk1, __msk2, __msk3, __msk4, __parity1, __parity2, __parity3, __parity4 > &__lhs, const __gnu_cxx::simd_fast_mersenne_twister_engine< _UIntType, __m, __pos1, __sl1, __sl2, __sr1, __sr2, __msk1, __msk2, __msk3, __msk4, __parity1, __parity2, __parity3, __parity4 > &__rhs)template<typename _Tp, typename _Poolp> bool operator== (const __mt_alloc< _Tp, _Poolp > &, const __mt_alloc< _Tp, _Poolp > &)template<typename _Tp> bool operator== (const __pool_alloc< _Tp > &, const __pool_alloc< _Tp > &)template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> bool operator== (const __versa_string< _CharT, _Traits, _Alloc, _Base > &__lhs, const __versa_string< _CharT, _Traits, _Alloc, _Base > &__rhs)β checks whether two strings are equivalent πtemplate<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> bool operator== (const __versa_string< _CharT, _Traits, _Alloc, _Base > &__lhs, const _CharT *__rhs)β checks whether a string and a C string are equivalent πtemplate<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> bool operator== (const _CharT *__lhs, const __versa_string< _CharT, _Traits, _Alloc, _Base > &__rhs)β checks whether a C string and a string are equivalent π«Άtemplate<typename _Tp> bool operator== (const _Pointer_adapter< _Tp > &__lhs, const _Pointer_adapter< _Tp > &__rhs)template<typename _Tp> bool operator== (const _Pointer_adapter< _Tp > &__lhs, int __rhs)template<typename _Tp1, typename _Tp2> bool operator== (const
okay bestie, picking right back up mid-list, the comparison operators are NOT done with us yet π
_Pointer_adapter< _Tp1 > &__lhs, _Tp2 __rhs)β this is just the tail end of anoperator==that kicked off back in the last part, so nothing new to spill, carry on π«Άtemplate<typename _Tp1, typename _Tp2> bool operator== (const _Pointer_adapter< _Tp1 > &__lhs, const _Pointer_adapter< _Tp2 > &__rhs)β two_Pointer_adapters, one equality check, does left equal right β¨template<class _CharT, class _Alloc> bool operator== (const _Rope_char_ptr_proxy< _CharT, _Alloc > &__x, const _Rope_char_ptr_proxy< _CharT, _Alloc > &__y)β same vibe but for_Rope_char_ptr_proxy, checking if__xand__yare equal πtemplate<class _CharT, class _Alloc> bool operator== (const _Rope_const_iterator< _CharT, _Alloc > &__x, const _Rope_const_iterator< _CharT, _Alloc > &__y)β equality for_Rope_const_iterators, so you can ask if two const rope iterators are pointing at the same spot πtemplate<class _CharT, class _Alloc> bool operator== (const _Rope_iterator< _CharT, _Alloc > &__x, const _Rope_iterator< _CharT, _Alloc > &__y)β and the non-const_Rope_iteratorgets the same treatment, iconic πΈtemplate<typename _Tp1, typename _Tp2> bool operator== (const bitmap_allocator< _Tp1 > &, const bitmap_allocator< _Tp2 > &) throw ()β comparing twobitmap_allocators. yes it'sthrow (), so no exceptions are getting thrown here, periodt πtemplate<typename _Value, typename _Int, typename _St> bool operator== (const character< _Value, _Int, _St > &lhs, const character< _Value, _Int, _St > &rhs)β equality for twocharacterobjects,lhsvsrhs, that's the whole assignment πtemplate<class _Key, class _Tp, class _HashFn, class _EqlKey, class _Alloc> bool operator== (const hash_map< _Key, _Tp, _HashFn, _EqlKey, _Alloc > &__hm1, const hash_map< _Key, _Tp, _HashFn, _EqlKey, _Alloc > &__hm2)β twohash_maps,__hm1and__hm2, do they match? this is the whole function π₯template<class _Key, class _Tp, class _HF, class _EqKey, class _Alloc> bool operator== (const hash_multimap< _Key, _Tp, _HF, _EqKey, _Alloc > &__hm1, const hash_multimap< _Key, _Tp, _HF, _EqKey, _Alloc > &__hm2)β same energy forhash_multimap,__hm1vs__hm2π¦template<class _Val, class _HashFcn, class _EqualKey, class _Alloc> bool operator== (const hash_multiset< _Val, _HashFcn, _EqualKey, _Alloc > &__hs1, const hash_multiset< _Val, _HashFcn, _EqualKey, _Alloc > &__hs2)βhash_multisetequality,__hs1and__hs2, go off βtemplate<class _Value, class _HashFcn, class _EqualKey, class _Alloc> bool operator== (const hash_set< _Value, _HashFcn, _EqualKey, _Alloc > &__hs1, const hash_set< _Value, _HashFcn, _EqualKey, _Alloc > &__hs2)β yep,hash_setversion too, same template parameter names and everything πtemplate<class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All> bool operator== (const hashtable< _Val, _Key, _HF, _Ex, _Eq, _All > &__ht1, const hashtable< _Val, _Key, _HF, _Ex, _Eq, _All > &__ht2)β the underlyinghashtableitself gets an equality check,__ht1vs__ht2, main character energy fr fr πtemplate<class _CharT, class _Alloc> bool operator== (const rope< _CharT, _Alloc > &__left, const rope< _CharT, _Alloc > &__right)β tworopes,__leftand__right, are they the same? obsessed π§template<class _Tp, class _Alloc> bool operator== (const slist< _Tp, _Alloc > &_SL1, const slist< _Tp, _Alloc > &_SL2)βslistequality,_SL1and_SL2, no cap πtemplate<typename _Tp, typename _Cond> bool operator== (const throw_allocator_base< _Tp, _Cond > &, const throw_allocator_base< _Tp, _Cond > &)β twothrow_allocator_bases, both unnamed args, checking equality πtemplate<typename _Cond> bool operator== (const throw_value_base< _Cond > &__a, const throw_value_base< _Cond > &__b)β andthrow_value_baseequality,__avs__b, cute πtemplate<typename _Tp> bool operator== (int __lhs, const _Pointer_adapter< _Tp > &__rhs)β a rawinton the left, a_Pointer_adapteron the right, and yeah this checks if they're equal πtemplate<typename _Tp1, typename _Tp2> bool operator> (_Tp1 __lhs, const _Pointer_adapter< _Tp2 > &__rhs)β and now we're in the greater-than era, some_Tp1 __lhsversus a_Pointer_adapter< _Tp2 >πtemplate<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> bool operator> (const __versa_string< _CharT, _Traits, _Alloc, _Base > &__lhs, const __versa_string< _CharT, _Traits, _Alloc, _Base > &__rhs)β the docs say it best: "Test if string follows string." πΈtemplate<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> bool operator> (const __versa_string< _CharT, _Traits, _Alloc, _Base > &__lhs, const _CharT *__rhs)β "Test if string follows C string." iconic β¨template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> bool operator> (const _CharT *__lhs, const __versa_string< _CharT, _Traits, _Alloc, _Base > &__rhs)β "Test if C string follows string." and that's the trio, slay πtemplate<typename _Tp> bool operator> (const _Pointer_adapter< _Tp > &__lhs, const _Pointer_adapter< _Tp > &__rhs)β back to_Pointer_adaptervs_Pointer_adapter, greater-than edition πtemplate<typename _Tp1, typename _Tp2> bool operator> (const _Pointer_adapter< _Tp1 > &__lhs, _Tp2 __rhs)β and the mixed_Tp2 __rhsflavor, keep up bestie π¦template<typename _Tp1, typename _Tp2> bool operator> (const _Pointer_adapter< _Tp1 > &__lhs, const _Pointer_adapter< _Tp2 > &__rhs)β and the two-_Pointer_adapterone with different_Tp1/_Tp2, the range is giving βtemplate<class _CharT, class _Alloc> bool operator> (const _Rope_const_iterator< _CharT, _Alloc > &__x, const _Rope_const_iterator< _CharT, _Alloc > &__y)β greater-than for_Rope_const_iterators,__xvs__yπ₯template<class _CharT, class _Alloc> bool operator> (const _Rope_iterator< _CharT, _Alloc > &__x, const _Rope_iterator< _CharT, _Alloc > &__y)β and the mutable_Rope_iteratorversion, obviously πtemplate<class _CharT, class _Alloc> bool operator> (const rope< _CharT, _Alloc > &__x, const rope< _CharT, _Alloc > &__y)βropevsrope, which one's bigger, we love to see it πtemplate<class _Tp, class _Alloc> bool operator> (const slist< _Tp, _Alloc > &_SL1, const slist< _Tp, _Alloc > &_SL2)βslistgreater-than,_SL1and_SL2, periodt πtemplate<typename _Tp1, typename _Tp2> bool operator>= (_Tp1 __lhs, const _Pointer_adapter< _Tp2 > &__rhs)β and nowoperator>=season opens with_Tp1 __lhsvs_Pointer_adapter< _Tp2 >πtemplate<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> bool operator>= (const __versa_string< _CharT, _Traits, _Alloc, _Base > &__lhs, const __versa_string< _CharT, _Traits, _Alloc, _Base > &__rhs)β docs say: "Test if string doesn't precede string." πtemplate<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> bool operator>= (const __versa_string< _CharT, _Traits, _Alloc, _Base > &__lhs, const _CharT *__rhs)β "Test if string doesn't precede C string." π§template<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> bool operator>= (const _CharT *__lhs, const __versa_string< _CharT, _Traits, _Alloc, _Base > &__rhs)β "Test if C string doesn't precede string." and the versa_string trio is complete πtemplate<typename _Tp> bool operator>= (const _Pointer_adapter< _Tp > &__lhs, const _Pointer_adapter< _Tp > &__rhs)β_Pointer_adapter >= _Pointer_adapter, same_Tpon both sides β¨template<typename _Tp1, typename _Tp2> bool operator>= (const _Pointer_adapter< _Tp1 > &__lhs, _Tp2 __rhs)β and the mixed-type one with_Tp2 __rhsπΈtemplate<typename _Tp1, typename _Tp2> bool operator>= (const _Pointer_adapter< _Tp1 > &__lhs, const _Pointer_adapter< _Tp2 > &__rhs)β and the different-_Tptwo-adapter version, that's three in a row, ate πtemplate<class _CharT, class _Alloc> bool operator>= (const _Rope_const_iterator< _CharT, _Alloc > &__x, const _Rope_const_iterator< _CharT, _Alloc > &__y)β_Rope_const_iteratorgreater-or-equal,__xand__yπtemplate<class _CharT, class _Alloc> bool operator>= (const _Rope_iterator< _CharT, _Alloc > &__x, const _Rope_iterator< _CharT, _Alloc > &__y)β mutable_Rope_iteratorversion, same deal π₯template<class _CharT, class _Alloc> bool operator>= (const rope< _CharT, _Alloc > &__x, const rope< _CharT, _Alloc > &__y)βrope >= rope, comparison arc fully slaying πtemplate<class _Tp, class _Alloc> bool operator>= (const slist< _Tp, _Alloc > &_SL1, const slist< _Tp, _Alloc > &_SL2)β andslist >= slistcloses out the comparison saga, we made it π
okay and NOW we switch gears into the stream-extraction corner of the library, because the operator>> squad has entered the chat π
template<typename _RealType, typename _CharT, typename _Traits> std::basic_istream< _CharT, _Traits > & operator>> (std::basic_istream< _CharT, _Traits > &__is, __gnu_cxx::beta_distribution< _RealType > &__x)β pulls a__gnu_cxx::beta_distribution< _RealType >out of the input stream__isπtemplate<typename _UIntType, typename _CharT, typename _Traits> std::basic_istream< _CharT, _Traits > & operator>> (std::basic_istream< _CharT, _Traits > &__is, __gnu_cxx::hypergeometric_distribution< _UIntType > &__x)β same energy, but for__gnu_cxx::hypergeometric_distribution< _UIntType >, straight outta__isπ§template<size_t _Dimen, typename _RealType, typename _CharT, typename _Traits> std::basic_istream< _CharT, _Traits > & operator>> (std::basic_istream< _CharT, _Traits > &__is, __gnu_cxx::normal_mv_distribution< _Dimen, _RealType > &__x)β yep,__gnu_cxx::normal_mv_distribution< _Dimen, _RealType >extraction, note thesize_t _Dimenup front πtemplate<typename _UIntType, size_t __m, size_t __pos1, size_t __sl1, size_t __sl2, size_t __sr1, size_t __sr2, uint32_t __msk1, uint32_t __msk2, uint32_t __msk3, uint32_t __msk4, uint32_t __parity1, uint32_t __parity2, uint32_t __parity3, uint32_t __parity4, typename _CharT, typename _Traits> std::basic_istream< _CharT, _Traits > & operator>> (std::basic_istream< _CharT, _Traits > &__is, __gnu_cxx::simd_fast_mersenne_twister_engine< _UIntType, __m, __pos1, __sl1, __sl2, __sr1, __sr2, __msk1, __msk2, __msk3, __msk4, __parity1, __parity2, __parity3, __parity4 > &__x)β okay this one is a MOUTHFUL, all thosesize_tanduint32_ttemplate params are just for the__gnu_cxx::simd_fast_mersenne_twister_engine, and yes we stream it out of__is, lowkey iconic πtemplate<typename _RealType, typename _CharT, typename _Traits> std::basic_istream< _CharT, _Traits > & operator>> (std::basic_istream< _CharT, _Traits > &__is, __gnu_cxx::triangular_distribution< _RealType > &__x)β__gnu_cxx::triangular_distribution< _RealType >from__is, easy β¨template<std::size_t _Dimen, typename _RealType, typename _CharT, typename _Traits> std::basic_istream< _CharT, _Traits > & operator>> (std::basic_istream< _CharT, _Traits > &__is, __gnu_cxx::uniform_inside_sphere_distribution< _Dimen, _RealType > &__x)β__gnu_cxx::uniform_inside_sphere_distribution< _Dimen, _RealType >, and note this one spells itstd::size_tπtemplate<std::size_t _Dimen, typename _RealType, typename _CharT, typename _Traits> std::basic_istream< _CharT, _Traits > & operator>> (std::basic_istream< _CharT, _Traits > &__is, __gnu_cxx::uniform_on_sphere_distribution< _Dimen, _RealType > &__x)β theon-sphere sibling,__gnu_cxx::uniform_on_sphere_distribution< _Dimen, _RealType >,std::size_tagain πΈtemplate<typename _RealType, typename _CharT, typename _Traits> std::basic_istream< _CharT, _Traits > & operator>> (std::basic_istream< _CharT, _Traits > &__is, __gnu_cxx::von_mises_distribution< _RealType > &__x)β__gnu_cxx::von_mises_distribution< _RealType >out of__is, fancy name, cute function πtemplate<typename _RealType, typename _CharT, typename _Traits> std::basic_istream< _CharT, _Traits > & operator>> (std::basic_istream< _CharT, _Traits > &__is, arcsine_distribution< _RealType > &__x)β now we're in the ones that DON'T write the__gnu_cxx::prefix, starting witharcsine_distribution< _RealType >π¦template<typename _RealType, typename _CharT, typename _Traits> std::basic_istream< _CharT, _Traits > & operator>> (std::basic_istream< _CharT, _Traits > &__is, hoyt_distribution< _RealType > &__x)βhoyt_distribution< _RealType >, no prefix, still from__isπ₯template<typename _RealType, typename _CharT, typename _Traits> std::basic_istream< _CharT, _Traits > & operator>> (std::basic_istream< _CharT, _Traits > &__is, k_distribution< _RealType > &__x)βk_distribution< _RealType >, short name, big stream energy βtemplate<typename _RealType, typename _CharT, typename _Traits> std::basic_istream< _CharT, _Traits > & operator>> (std::basic_istream< _CharT, _Traits > &__is, logistic_distribution< _RealType > &__x)βlogistic_distribution< _RealType >, yep πtemplate<typename _RealType, typename _CharT, typename _Traits> std::basic_istream< _CharT, _Traits > & operator>> (std::basic_istream< _CharT, _Traits > &__is, nakagami_distribution< _RealType > &__x)βnakagami_distribution< _RealType >, say it five times fast πtemplate<typename _RealType, typename _CharT, typename _Traits> std::basic_istream< _CharT, _Traits > & operator>> (std::basic_istream< _CharT, _Traits > &__is, pareto_distribution< _RealType > &__x)βpareto_distribution< _RealType >, the 80/20 one, obsessed πtemplate<typename _RealType, typename _CharT, typename _Traits> std::basic_istream< _CharT, _Traits > & operator>> (std::basic_istream< _CharT, _Traits > &__is, rice_distribution< _RealType > &__x)β andrice_distribution< _RealType >wraps up the no-prefix distribution crew π§template<typename _Tp, typename _Integer> _Tp power (_Tp __x, _Integer __n)β returns_Tp, takes__xand an_Integer __n, classic power move (literally) πtemplate<typename _Tp, typename _Integer, typename _MonoidOperation> _Tp power (_Tp __x, _Integer __n, _MonoidOperation __monoid_op)β same but with a_MonoidOperation __monoid_opin the mix, fancy β¨template<typename _InputIterator, typename _RandomAccessIterator> _RandomAccessIterator random_sample (_InputIterator __first,β and this one's getting cut off right here mid-signature, bestie, the rest ofrandom_sampleis waiting for us in the next part so don't go anywhere π
okay bestie we're back and the function list is STILL going β nobody said this page was short, and I refuse to skip a single one π so here's the rest of the SYNOPSIS function crew, and yeah the first one is literally the tail end of an overload that started in the last part, mid-signature, no context, iconic of it honestly π
_InputIterator __last, _RandomAccessIterator __out_first,
_RandomAccessIterator __out_last)
template<typename _InputIterator, typename _RandomAccessIterator,
typename _RandomNumberGenerator> _RandomAccessIterator random_sample
(_InputIterator __first, _InputIterator __last,
_RandomAccessIterator __out_first, _RandomAccessIterator __out_last,
_RandomNumberGenerator &__rand)
template<typename _ForwardIterator, typename _OutputIterator, typename
_Distance> _OutputIterator random_sample_n (_ForwardIterator
__first, _ForwardIterator __last, _OutputIterator __out, const
_Distance __n)
template<typename _ForwardIterator, typename _OutputIterator, typename
_Distance, typename _RandomNumberGenerator> _OutputIterator
random_sample_n (_ForwardIterator __first, _ForwardIterator __last,
_OutputIterator __out, const _Distance __n, _RandomNumberGenerator
&__rand)
void rotate (_Rope_iterator< char, __STL_DEFAULT_ALLOCATOR(char)>
__first, _Rope_iterator< char, __STL_DEFAULT_ALLOCATOR(char)>
__middle, _Rope_iterator< char, __STL_DEFAULT_ALLOCATOR(char)>
__last)
double stod (const __vstring &__str, std::size_t *__idx=0)
double stod (const __wvstring &__str, std::size_t *__idx=0)
float stof (const __vstring &__str, std::size_t *__idx=0)
float stof (const __wvstring &__str, std::size_t *__idx=0)
int stoi (const __vstring &__str, std::size_t *__idx=0, int __base=10)
int stoi (const __wvstring &__str, std::size_t *__idx=0, int __base=10)
long stol (const __vstring &__str, std::size_t *__idx=0, int __base=10)
long stol (const __wvstring &__str, std::size_t *__idx=0, int __base=10)
long double stold (const __vstring &__str, std::size_t *__idx=0)
long double stold (const __wvstring &__str, std::size_t *__idx=0)
long long stoll (const __vstring &__str, std::size_t *__idx=0, int
__base=10)
long long stoll (const __wvstring &__str, std::size_t *__idx=0, int
__base=10)
unsigned long stoul (const __vstring &__str, std::size_t *__idx=0, int
__base=10)
unsigned long stoul (const __wvstring &__str, std::size_t *__idx=0, int
__base=10)
unsigned long long stoull (const __vstring &__str, std::size_t *__idx,
int __base=10)
unsigned long long stoull (const __wvstring &__str, std::size_t
*__idx=0, int __base=10)
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> void swap
(__versa_string< _CharT, _Traits, _Alloc, _Base > &__lhs,
__versa_string< _CharT, _Traits, _Alloc, _Base > &__rhs)
Swap contents of two strings.
template<typename _Tp> void swap (_ExtPtr_allocator< _Tp > &__larg,
_ExtPtr_allocator< _Tp > &__rarg)
template<class _CharT, class __Alloc> void swap (_Rope_char_ref_proxy<
_CharT, __Alloc > __a, _Rope_char_ref_proxy< _CharT, __Alloc > __b)
template<class _Key, class _Tp, class _HashFn, class _EqlKey, class
_Alloc> void swap (hash_map< _Key, _Tp, _HashFn, _EqlKey, _Alloc >
&__hm1, hash_map< _Key, _Tp, _HashFn, _EqlKey, _Alloc > &__hm2)
template<class _Key, class _Tp, class _HashFn, class _EqlKey, class
_Alloc> void swap (hash_multimap< _Key, _Tp, _HashFn, _EqlKey,
_Alloc > &__hm1, hash_multimap< _Key, _Tp, _HashFn, _EqlKey, _Alloc
> &__hm2)
template<class _Val, class _HashFcn, class _EqualKey, class _Alloc> void
swap (hash_multiset< _Val, _HashFcn, _EqualKey, _Alloc > &__hs1,
hash_multiset< _Val, _HashFcn, _EqualKey, _Alloc > &__hs2)
template<class _Val, class _HashFcn, class _EqualKey, class _Alloc> void
swap (hash_set< _Val, _HashFcn, _EqualKey, _Alloc > &__hs1,
hash_set< _Val, _HashFcn, _EqualKey, _Alloc > &__hs2)
template<class _Val, class _Key, class _HF, class _Extract, class
_EqKey, class _All> void swap (hashtable< _Val, _Key, _HF, _Extract,
_EqKey, _All > &__ht1, hashtable< _Val, _Key, _HF, _Extract, _EqKey,
_All > &__ht2)
template<class _CharT, class _Alloc> void swap (rope< _CharT, _Alloc >
&__x, rope< _CharT, _Alloc > &__y)
template<class _Tp, class _Alloc> void swap (slist< _Tp, _Alloc > &__x,
slist< _Tp, _Alloc > &__y)
template<typename _Cond> void swap (throw_value_base< _Cond > &__a,
throw_value_base< _Cond > &__b)
__vstring to_string (double __val)
__vstring to_string (float __val)
__vstring to_string (int __val)
__vstring to_string (long __val)
__vstring to_string (long double __val)
__vstring to_string (long long __val)
__vstring to_string (unsigned __val)
__vstring to_string (unsigned long __val)
__vstring to_string (unsigned long long __val)
__wvstring to_wstring (double __val)
__wvstring to_wstring (float __val)
__wvstring to_wstring (int __val)
__wvstring to_wstring (long __val)
__wvstring to_wstring (long double __val)
__wvstring to_wstring (long long __val)
__wvstring to_wstring (unsigned __val)
__wvstring to_wstring (unsigned long __val)
__wvstring to_wstring (unsigned long long __val)
template<typename _InputIter, typename _Size, typename _ForwardIter>
std::pair< _InputIter, _ForwardIter > uninitialized_copy_n
(_InputIter __first, _Size __count, _ForwardIter __result)
Copies the range [first,last) into result.
okay breathe. that was a lot. drink some water bestie π«Ά
β¨ VARIABLES β¨
these are the globals, the constants, the class-level static baddies that just exist and you don't even have to instantiate anything to reach them:
const _Lock_policy __default_lock_policytemplate<typename _RealType> constexpr _RealType __math_constants< _RealType >::__etemplate<typename _RealType> constexpr _RealType __math_constants< _RealType >::__gamma_etemplate<typename _RealType> constexpr _RealType __math_constants< _RealType >::__ln_10template<typename _RealType> constexpr _RealType __math_constants< _RealType >::__ln_2template<typename _RealType> constexpr _RealType __math_constants< _RealType >::__ln_3template<typename _RealType> constexpr _RealType __math_constants< _RealType >::__log10_etemplate<typename _RealType> constexpr _RealType __math_constants< _RealType >::__log2_etemplate<typename _RealType> constexpr _RealType __math_constants< _RealType >::__one_div_etemplate<typename _RealType> constexpr _RealType __math_constants< _RealType >::__one_div_pitemplate<typename _RealType> constexpr _RealType __math_constants< _RealType >::__one_div_root_2template<typename _RealType> constexpr _RealType __math_constants< _RealType >::__phitemplate<typename _RealType> constexpr _RealType __math_constants< _RealType >::__pitemplate<typename _RealType> constexpr _RealType __math_constants< _RealType >::__pi_halftemplate<typename _RealType> constexpr _RealType __math_constants< _RealType >::__pi_quartertemplate<typename _RealType> constexpr _RealType __math_constants< _RealType >::__pi_thirdtemplate<typename _RealType> constexpr _RealType __math_constants< _RealType >::__root_2template<typename _RealType> constexpr _RealType __math_constants< _RealType >::__root_3template<typename _RealType> constexpr _RealType __math_constants< _RealType >::__root_5template<typename _RealType> constexpr _RealType __math_constants< _RealType >::__root_7template<typename _RealType> constexpr _RealType __math_constants< _RealType >::__root_pi_div_2template<typename _RealType> constexpr _RealType __math_constants< _RealType >::__two_div_pitemplate<typename _RealType> constexpr _RealType __math_constants< _RealType >::__two_div_root_pitemplate<typename _Value> const int __numeric_traits_floating< _Value >::__digits10template<typename _Value> const bool __numeric_traits_floating< _Value >::__is_signedtemplate<typename _Value> const int __numeric_traits_floating< _Value >::__max_digits10template<typename _Value> const int __numeric_traits_floating< _Value >::__max_exponent10template<typename _Value> const int __numeric_traits_integer< _Value >::__digitstemplate<typename _Value> const bool __numeric_traits_integer< _Value >::__is_signedtemplate<typename _Value> const _Value __numeric_traits_integer< _Value >::__maxtemplate<typename _Value> const _Value __numeric_traits_integer< _Value >::__mintemplate<typename _Tp> _Atomic_word __pool_alloc< _Tp >::_S_force_newtemplate<typename _CharT, typename _Traits, typename _Alloc> __rc_string_base< _CharT, _Traits, _Alloc >::_Rep_empty __rc_string_base< _CharT, _Traits, _Alloc >::_S_empty_reptemplate<typename _CharT, typename _Traits, typename _Alloc, template< typename, typename, typename > class _Base> const __versa_string< _CharT, _Traits, _Alloc, _Base >::size_type __versa_string< _CharT, _Traits, _Alloc, _Base >::npostemplate<typename _PrimeType> const _PrimeType _Hashtable_prime_list< _PrimeType >::__stl_prime_list [_S_num_primes]template<typename _Tp> std::size_t bitmap_allocator< _Tp >::_S_block_sizetemplate<typename _Tp> bitmap_allocator< _Tp >::_BPVector::size_type bitmap_allocator< _Tp >::_S_last_dealloc_indextemplate<typename _Tp> bitmap_allocator< _Tp >::_BPVector bitmap_allocator< _Tp >::_S_mem_blockstemplate<typename _Tp> bitmap_allocator< _Tp >::__mutex_type bitmap_allocator< _Tp >::_S_muttemplate<class _CharT, class _Alloc> rope< _CharT, _Alloc > identity_element (_Rope_Concat_fn< _CharT, _Alloc >)template<class _CharT, class _Alloc> _CharT rope< _CharT, _Alloc >::_S_empty_c_str [1]template<class _CharT, class _Alloc> const unsigned long rope< _CharT, _Alloc >::_S_min_len [int(__detail::_S_max_rope_depth)+1]template<class _CharT, class _Alloc> const rope< _CharT, _Alloc >::size_type rope< _CharT, _Alloc >::npos
that's the whole variable roster, no cuts, no edits, we do not gatekeep here π
πΈ DETAILED DESCRIPTION πΈ
GNU extensions for public use.
that's it. that's the whole description. short king energy but we respect it π
π TYPEDEF DOCUMENTATION π
template<typename _Tp> using __gnu_cxx::__int_traits
Convenience alias for __numeric_traits<integer-type>.
one whole typedef, one whole line of description, and it's still doing the most for you β a cute little shortcut name so you don't have to type the whole traits thing. slay β¨
π FUNCTION DOCUMENTATION π
okay now we get into the actual documented functions, the ones with real prose attached, let's go π¦
template<typename _ToType, typename _FromType> _ToType __gnu_cxx::__static_pointer_cast (_FromType * __arg) [inline]
Casting operations for cases where _FromType is a standard pointer. _ToType can be a standard or non-standard pointer.
so: you've got a normal-ass pointer coming in, and the thing you're casting to might be a normal pointer or one of those fancy custom ones. either way, this handles it π«
template<typename _ToType, typename _FromType> _ToType __gnu_cxx::__static_pointer_cast (const _FromType & __arg) [inline]
Casting operations for cases where _FromType is not a standard pointer. _ToType can be a standard or non-standard pointer. Given that _FromType is not a pointer, it must have a get() method that returns the standard pointer equivalent of the address it points to, and must have an element_type typedef which names the type it points to.
heads up bestie: if_FromTypeisn't a real pointer, this overload has requirements. it needs thatget()method and thatelement_typetypedef or it's simply not going to work. no cap π₯
std::size_t __gnu_cxx::_Bit_scan_forward (std::size_t __num) [inline]
Generic Version of the bsf instruction.
Referenced by __gnu_cxx::bitmap_allocator< _Tp1 >::_M_allocate_single_object().
found the first set bit, moving on, that's the vibe π
and we are STILL not done, the function docs keep rolling, so stay with me bestie, more coming in the next part π
std::iota π
template<typename _ForwardIterator, typename _Tp> void std::iota
(_ForwardIterator __first, _ForwardIterator __last, _Tp __value)
[constexpr]
bestie this one is a whole vibe π
it makes you a range of sequentially increasing values, no cap. for every element in the range [first,last) it assigns value and then increments value as if by ++value. so you hand it a starting number and it just goes up and up and up for the whole range. iconic fr fr.
Parameters β the receipts:
__firstβ start of range π«Ά__lastβ end of range πΈ__valueβ starting value β
__gnu_cxx::operator!= (__versa_string vs __versa_string) π
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> bool __gnu_cxx::operator!=
(const __versa_string< _CharT, _Traits, _Alloc, _Base > & __lhs, const
__versa_string< _CharT, _Traits, _Alloc, _Base > & __rhs) [inline]
test if two strings are different, periodt.
__lhsβ first string πΈ__rhsβ second string πΈ
Returns β true if __lhs.compare(__rhs) != 0, false otherwise β¨
__gnu_cxx::operator!= (__versa_string vs C string) π
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> bool __gnu_cxx::operator!=
(const __versa_string< _CharT, _Traits, _Alloc, _Base > & __lhs, const
_CharT * __rhs) [inline]
test if a string and a C string are different π¦
__lhsβ string π__rhsβ C string π
Returns β true if __lhs.compare(__rhs) != 0, false otherwise β¨
__gnu_cxx::operator!= (C string vs __versa_string) π
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> bool __gnu_cxx::operator!=
(const _CharT * __lhs, const __versa_string< _CharT, _Traits, _Alloc,
_Base > & __rhs) [inline]
test if a C string and a string are different πΈ
__lhsβ C string π__rhsβ string π
Returns β true if __rhs.compare(__lhs) != 0, false otherwise β¨
note the flip bestie: it's __rhs.compare(__lhs) here, not the other way round π
__gnu_cxx::operator+ (_CharT + __versa_string) π₯
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> __versa_string< _CharT,
_Traits, _Alloc, _Base > __gnu_cxx::operator+ (_CharT __lhs, const
__versa_string< _CharT, _Traits, _Alloc, _Base > & __rhs)
concatenate a character and a string, slay π
__lhsβ first string β¨__rhsβ last string β¨
Returns β a new string with __lhs followed by __rhs π
References β __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::append(), __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::push_back(), __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::reserve(), and __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::size() π
__gnu_cxx::operator+ (__versa_string + _CharT) π₯
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> __versa_string< _CharT,
_Traits, _Alloc, _Base > __gnu_cxx::operator+ (const __versa_string<
_CharT, _Traits, _Alloc, _Base > & __lhs, _CharT __rhs)
concatenate a string and a character, same energy, other direction π
__lhsβ first string β¨__rhsβ last string β¨
Returns β a new string with __lhs followed by __rhs π
References β __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::append(), __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::push_back(), __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::reserve(), and __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::size() π
__gnu_cxx::operator+ (__versa_string + __versa_string) π₯
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> __versa_string< _CharT,
_Traits, _Alloc, _Base > __gnu_cxx::operator+ (const __versa_string<
_CharT, _Traits, _Alloc, _Base > & __lhs, const __versa_string< _CharT,
_Traits, _Alloc, _Base > & __rhs)
concatenate two strings, the classic ππ
__lhsβ first string β¨__rhsβ last string β¨
Returns β a new string with the value of __lhs followed by __rhs π
References β __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::append(), __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::reserve(), and __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::size() π
heads up: no push_back() in this one's reference list, don't let anyone tell you otherwise π
__gnu_cxx::operator+ (__versa_string + C string) π₯
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> __versa_string< _CharT,
_Traits, _Alloc, _Base > __gnu_cxx::operator+ (const __versa_string<
_CharT, _Traits, _Alloc, _Base > & __lhs, const _CharT * __rhs)
concatenate a string and a C string π¦
__lhsβ first string β¨__rhsβ last string β¨
Returns β a new string with __lhs followed by __rhs π
References β __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::size() π
__gnu_cxx::operator+ (C string + __versa_string) π₯
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> __versa_string< _CharT,
_Traits, _Alloc, _Base > __gnu_cxx::operator+ (const _CharT * __lhs,
const __versa_string< _CharT, _Traits, _Alloc, _Base > & __rhs)
concatenate a C string and a string π¦
__lhsβ first string β¨__rhsβ last string β¨
Returns β a new string with the value of __lhs followed by __rhs π
References β __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::size() π
__gnu_cxx::operator< (__versa_string vs __versa_string) π
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> bool __gnu_cxx::operator<
(const __versa_string< _CharT, _Traits, _Alloc, _Base > & __lhs, const
__versa_string< _CharT, _Traits, _Alloc, _Base > & __rhs) [inline]
test if one string comes before another π
__lhsβ first string π__rhsβ second string π
Returns β true if __lhs precedes __rhs, false otherwise β¨
References β __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare() π
__gnu_cxx::operator< (__versa_string vs C string) π
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> bool __gnu_cxx::operator<
(const __versa_string< _CharT, _Traits, _Alloc, _Base > & __lhs, const
_CharT * __rhs) [inline]
test if a string comes before a C string πΈ
__lhsβ string π__rhsβ C string π
Returns β true if __lhs precedes __rhs, false otherwise β¨
References β __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare() π
__gnu_cxx::operator< (C string vs __versa_string) π
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> bool __gnu_cxx::operator<
(const _CharT * __lhs, const __versa_string< _CharT, _Traits, _Alloc,
_Base > & __rhs) [inline]
test if a C string comes before a string πΈ
__lhsβ C string π__rhsβ string π
Returns β true if __lhs precedes __rhs, false otherwise β¨
References β __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare() π
__gnu_cxx::operator<= (__versa_string vs __versa_string) π
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> bool __gnu_cxx::operator<=
(const __versa_string< _CharT, _Traits, _Alloc, _Base > & __lhs, const
__versa_string< _CharT, _Traits, _Alloc, _Base > & __rhs) [inline]
test if one string doesn't follow another πΈ
__lhsβ first string π__rhsβ second string π
Returns β true if __lhs doesn't follow __rhs, false otherwise β¨
References β __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare() π
__gnu_cxx::operator<= (__versa_string vs C string) π
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> bool __gnu_cxx::operator<=
(const __versa_string< _CharT, _Traits, _Alloc, _Base > & __lhs, const
_CharT * __rhs) [inline]
test if a string doesn't follow a C string πΈ
__lhsβ string π__rhsβ C string π
Returns β true if __lhs doesn't follow __rhs, false otherwise β¨
References β __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare() π
__gnu_cxx::operator<= (C string vs __versa_string) π
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> bool __gnu_cxx::operator<=
(const _CharT * __lhs, const __versa_string< _CharT, _Traits, _Alloc,
_Base > & __rhs) [inline]
test if a C string doesn't follow a string πΈ
__lhsβ C string π__rhsβ string π
Returns β true if __lhs doesn't follow __rhs, false otherwise β¨
References β __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare() π
__gnu_cxx::operator== (__versa_string vs __versa_string) β
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> bool __gnu_cxx::operator==
(const __versa_string< _CharT, _Traits, _Alloc, _Base > & __lhs, const
__versa_string< _CharT, _Traits, _Alloc, _Base > & __rhs) [inline]
test if two strings are the same, the moment of truth π
__lhsβ first string π__rhsβ second string π
Returns β true if __lhs.compare(__rhs) == 0, false otherwise β¨
References β __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::data(), and __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::size() π
__gnu_cxx::operator== (__versa_string vs C string) β
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> bool __gnu_cxx::operator==
(const __versa_string< _CharT, _Traits, _Alloc, _Base > & __lhs, const
_CharT * __rhs) [inline]
test if a string and a C string are the same πΈ
__lhsβ string π__rhsβ C string π
Returns β true if __lhs.compare(__rhs) == 0, false otherwise β¨
References β __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::data(), and __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::size() π
__gnu_cxx::operator== (C string vs __versa_string) β
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> bool __gnu_cxx::operator==
(const _CharT * __lhs, const __versa_string< _CharT, _Traits, _Alloc,
_Base > & __rhs) [inline]
test if a C string and a string are the same πΈ
__lhsβ C string π__rhsβ string π
Returns β true if __rhs.compare(__lhs) == 0, false otherwise β¨
again bestie, the compare goes __rhs.compare(__lhs) β flipped, but make it fashion π
__gnu_cxx::operator== (_Pointer_adapter vs _Pointer_adapter) πβ¨
template<typename _Tp> bool __gnu_cxx::operator== (const _Pointer_adapter<
_Tp > & __lhs, const _Pointer_adapter< _Tp > & __rhs) [inline]
comparison operators for _Pointer_adapter defer to the base class' comparison operators, when possible π no cap, it just hands the job off when it can.
__gnu_cxx::operator> (__versa_string vs __versa_string) π
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> bool __gnu_cxx::operator>
(const __versa_string< _CharT, _Traits, _Alloc, _Base > & __lhs, const
__versa_string< _CharT, _Traits, _Alloc, _Base > & __rhs) [inline]
test if one string follows another π
__lhsβ first string π__rhsβ second string π
Returns β true if __lhs follows __rhs, false otherwise β¨
References β __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare() π
__gnu_cxx::operator> (__versa_string vs C string) π
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> bool __gnu_cxx::operator>
(const __versa_string< _CharT, _Traits, _Alloc, _Base > & __lhs, const
_CharT * __rhs) [inline]
test if a string follows a C string πΈ
__lhsβ string π__rhsβ C string π
Returns β true if __lhs follows __rhs, false otherwise β¨
References __gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare(). π
operator> β Test if C string follows string. β¨
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> bool __gnu_cxx::operator>
(const _CharT * __lhs, const __versa_string< _CharT, _Traits, _Alloc,
_Base > & __rhs) [inline]
- Parameters:
__lhsβ C string. (the little C-string bestie) π__rhsβ String. (the big string energy) π¦
- Returns:
Trueif__lhsfollows__rhs.Falseotherwise. π - References:
__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare().
operator>= β Test if string doesn't precede string. πΈ
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> bool __gnu_cxx::operator>=
(const __versa_string< _CharT, _Traits, _Alloc, _Base > & __lhs, const
__versa_string< _CharT, _Traits, _Alloc, _Base > & __rhs) [inline]
- Parameters:
__lhsβ First string.__rhsβ Second string.
- Returns:
Trueif__lhsdoesn't precede__rhs.Falseotherwise. π¦ - References:
__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare().
operator>= β Test if string doesn't precede C string. β¨
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> bool __gnu_cxx::operator>=
(const __versa_string< _CharT, _Traits, _Alloc, _Base > & __lhs, const
_CharT * __rhs) [inline]
- Parameters:
__lhsβ String.__rhsβ C string.
- Returns:
Trueif__lhsdoesn't precede__rhs.Falseotherwise. πΈ - References:
__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare().
operator>= β Test if C string doesn't precede string. π
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> bool __gnu_cxx::operator>=
(const _CharT * __lhs, const __versa_string< _CharT, _Traits, _Alloc,
_Base > & __rhs) [inline]
- Parameters:
__lhsβ C string.__rhsβ String.
- Returns:
Trueif__lhsdoesn't precede__rhs.Falseotherwise. β¨ - References:
__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare().
swap β Swap contents of two strings. β‘οΈ
template<typename _CharT, typename _Traits, typename _Alloc, template<
typename, typename, typename > class _Base> void __gnu_cxx::swap
(__versa_string< _CharT, _Traits, _Alloc, _Base > & __lhs,
__versa_string< _CharT, _Traits, _Alloc, _Base > & __rhs) [inline]
- Parameters:
__lhsβ First string.__rhsβ Second string.
- Exchanges the contents of
__lhsand__rhsin constant time. β‘οΈ - References:
__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::swap().
Author
Generated automatically by Doxygen for libstdc++ from the source code.
And that's the whole vibe, bestie! This page is from libstdc++ and the footer says __gnu_cxx(3) β no date in sight, but it's timeless, periodt. πβ¨
π¦ where this page comes from
- arch rolling: gcc 16.2.1+r23+gd564253eb6c8-1 Β· GPL-3.0-or-later WITH GCC-exception-3.1 AND GFDL-1.3-or-later
- fedora 44: libstdc++-docs 16.2.1-2.fc44
- fedora 44: libstdc++-docs 16.2.1-3.fc44 Β· GPL-3.0-or-later AND LGPL-3.0-or-later AND (GPL-3.0-or-later WITH GCC-exception-3.1) AND (GPL-3.0-or-later WITH Texinfo-exception) AND (LGPL-2.1-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GNU-compiler-exception) AND BSL-1.0 AND GFDL-1.3-or-later AND Linux-man-pages-copyleft-2-para AND SunPro AND BSD-1-Clause AND BSD-2-Clause AND BSD-2-Clause-Views AND BSD-3-Clause AND BSD-4-Clause AND BSD-Source-Code AND Zlib AND MIT AND Apache-2.0 AND (Apache-2.0 WITH LLVM-Exception) AND ZPL-2.1 AND ISC AND LicenseRef-Fedora-Public-Domain AND HP-1986 AND curl AND Martin-Birgmeier AND HPND-Markus-Kuhn AND dtoa AND SMLNJ AND AMD-newlib AND OAR AND HPND-merchantability-variant AND HPND-Intel
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms