__gnu_cxx(3cxx)
๐ฆ __gnu_cxx (3cxx) ๐ฆ
okay bestie, this is the __gnu_cxx page from manual section 3cxx โ GNU extensions for public use, and it is lowkey a whole buffet of C++ goodies. ๐
โจ
๐ธ NAME ๐ธ
__gnu_cxx โ GNU extensions for public use. That's the whole vibe, periodt. ๐ซถ
๐ SYNOPSIS ๐
okay so the synopsis is split into namespaces, classes, typedefs, and enumerations. Buckle up, because this list is long and iconic. ๐
๐ง Namespaces ๐ง
namespace __detailโ implementation details that are not part of the__gnu_cxxnamespace interface. It's backstage, bestie. ๐ญnamespace typelistโ GNU typelist extensions for public compile-time use. Compile-time slay. โก
๐งธ Classes ๐งธ
Some of these have no little blurb in the original, and I'm not about to invent lore โ those are marked as name-only. No cap. ๐ซก
struct __alloc_traitsโ uniform interface to C++98 and C++11 allocators. The bridge between eras. ๐struct __common_pool_policyโ policy for shared__poolobjects. Shared pool energy. ๐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). Multithreaded allocator behavior, no cap. ๐งตclass __mt_alloc_baseโ base class for_Tpdependent member functions. Base-class business. ๐งฑstruct __per_type_pool_policyโ policy for individual__poolobjects. Personalized pool policy. ๐class __poolโ data describing the underlying memory pool, parameterized on threading support. Pool lore. ๐งclass __pool< false >โ specialization for single thread. Solo pool. ๐ถclass __pool< true >โ specialization for thread enabled, viagthreads.h. Threaded pool. ๐งตclass __pool_allocโ allocator using a memory pool with a single lock. One lock, pool vibes. ๐class __pool_alloc_baseโ base class for__pool_alloc. The foundation, bestie. ๐งฑstruct __pool_baseโ base class for pool object. Pool object parent energy. ๐ซถclass __rc_string_baseโ name only in the original. ๐class __scoped_lockโ scoped lock idiom. Lock it down, scoped-style. ๐class __versa_stringโ template class__versa_string. Template string royalty. ๐struct _Casterโ name only in the original. ๐struct _Char_typesโ mapping from character type to associated types. Character-type matchmaking. ๐class _ExtPtr_allocatorโ an example allocator which uses a non-standard pointer type. Example allocator with main character energy. ๐struct _Invalid_typeโ name only in the original. ๐class _Pointer_adapterโ name only in the original. ๐class _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. Relative-address realness. ๐class _Relative_pointer_impl< const _Tp >โ name only in the original. ๐class _Std_pointer_implโ a storage policy for use with_Pointer_adapter<>which yields a standard pointer. Standard pointer, standard slay. โจstruct _Unqualified_typeโ name only in the original. ๐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. Annotation station. ๐ท๏ธclass binary_composeโ an SGI extension. ๐งฉclass bitmap_allocatorโ Bitmap Allocator, primary template. Bitmap bestie. ๐บ๏ธstruct char_traitsโ base class used to implementstd::char_traits. Trait school. ๐struct characterโ a POD class that serves as a character abstraction class. Character abstraction, cute. ๐คstruct condition_baseโ base struct for condition policy. Condition policy foundation. ๐งฑ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. Debugging allocator, very detective. ๐ต๏ธclass enc_filebufโclass enc_filebuf. That's the blurb, bestie. ๐struct encoding_char_traitsโencoding_char_traits. Name so nice it's the description. ๐class encoding_stateโ extension to useiconvfor dealing with character encodings. Encoding state, globally minded. ๐struct forced_errorโ thrown by utilities for testing exception safety. Error on demand, for science. ๐งชclass free_listโ the free list class for managing chunks of memory to be given to and returned by thebitmap_allocator. Free-list management realness. ๐class hash_mapโ name only in the original. ๐class hash_multimapโ name only in the original. ๐class hash_multisetโ name only in the original. ๐class hash_setโ name only in the original. ๐struct limit_conditionโ base class for incremental control and throw. Limit-condition behavior. ๐ฆclass malloc_allocatorโ an allocator that usesmalloc.mallocgirlie. ๐งclass new_allocatorโ an allocator that uses globalnew, as per C++03 [20.4.1].new-school allocator. ๐struct project1stโ an SGI extension. ๐งฉstruct project2ndโ an SGI extension. ๐งฉstruct random_conditionโ base class for random probability control and throw. Random-condition chaos, controlled. ๐ฒstruct rb_treeโ name only in the original. ๐class ropeโ name only in the original. ๐ชขstruct select1stโ an SGI extension. ๐งฉstruct select2ndโ an SGI extension. ๐งฉclass slistโ name only in the original. ๐class stdio_filebufโ provides a layer of compatibility for C/POSIX. Compatibility layer, doing important work. ๐ซถclass stdio_sync_filebufโ provides a layer of compatibility for C. C-compatible sync filebuf. ๐งตclass subtractive_rngโ name only in the original. ๐struct temporary_bufferโ name only in the original. ๐class throw_allocator_baseโ allocator class with logging and exception generation control. Intended to be used as anallocator_typein templatized code. Throwy allocator base. ๐ฏstruct throw_allocator_limitโ allocator throwing via limit condition. Limit-throwing allocator. ๐ฆstruct throw_allocator_randomโ allocator throwing via random condition. Random-throwing allocator. ๐ฒstruct throw_value_baseโ class with exception generation control. Intended to be used as avalue_typein templatized code. Throwy value base. ๐ฏstruct throw_value_limitโ type throwing via limit condition. Limit-throwing type. ๐ฆstruct throw_value_randomโ type throwing via random condition. Random-throwing type. ๐ฒclass unary_composeโ an SGI extension. ๐งฉ
๐งต Typedefs ๐งต
okay these are exact, so read them like the sacred texts they are. ๐
typedef void(* __destroy_handler) (void *)template<typename _Tp > using __int_traits = __numeric_traits_integer< _Tp >โ 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 rope< wchar_t > wrope
๐ฎ Enumerations ๐ฎ
enum { _S_num_primes }โ the unnamed enum with_S_num_primes. ๐ขenum _Lock_policy { _S_single, _S_mutex, _S_atomic }โ the lock-policy enum, with_S_single,_S_mutex, and_S_atomic. ๐
okay so the Functions section is a whole buffet bestie, like 90-plus entries, and we're going through every single one because we don't skip ๐ the double underscore at the front is giving "internal, do not touch" energy, iykyk, but here they all are in order, no skips, no cap.
void __atomic_add (volatile _Atomic_word *, int) noexceptโ atomic add, exactly what it says on the tin, and it'snoexceptso it is not about to throw hands ๐ โโ๏ธvoid __atomic_add_dispatch (_Atomic_word *__mem, int __val)โ the dispatch-y version, takes__memand__val๐ธvoid __atomic_add_single (_Atomic_word *__mem, int __val)โ the_singleflavored one, same__mem+__valduo ๐ซถtemplate<class _Tp > void __aux_require_boolean_expr (const _Tp &__t)โ templated on_Tp, takesconst _Tp &__t, and it's literally begging for a boolean expression โจtemplate<typename _ToType , typename _FromType > _ToType __const_pointer_cast (_FromType *__arg)โ const pointer cast, pointer-flavored, returns_ToType๐template<typename _ToType , typename _FromType > _ToType __const_pointer_cast (const _FromType &__arg)โ same cast but reference-flavored,const _FromType &__argbestie ๐template<typename _InputIterator , typename _Size , typename _OutputIterator > std::pair< _InputIterator, _OutputIterator > __copy_n (_InputIterator __first, _Size __count, _OutputIterator __result, std::input_iterator_tag)โ__copy_nwith thestd::input_iterator_tagdispatch, hands you back astd::pairof the two iterators ๐template<typename _RAIterator , typename _Size , typename _OutputIterator > std::pair< _RAIterator, _OutputIterator > __copy_n (_RAIterator __first, _Size __count, _OutputIterator __result, std::random_access_iterator_tag)โ the random-access twin,std::random_access_iterator_tag, samestd::pairreturn ๐template<typename _InputIterator , typename _Distance > void __distance (_InputIterator __first, _InputIterator __last, _Distance &__n, std::input_iterator_tag)โ__distancefor input iterators, drops the answer into__n๐ฆtemplate<typename _RandomAccessIterator , typename _Distance > void __distance (_RandomAccessIterator __first, _RandomAccessIterator __last, _Distance &__n, std::random_access_iterator_tag)โ and the random-access version, also writing into__nโญtemplate<typename _ToType , typename _FromType > _ToType __dynamic_pointer_cast (_FromType *__arg)โ dynamic pointer cast, pointer intake,_ToTypeout ๐template<typename _ToType , typename _FromType > _ToType __dynamic_pointer_cast (const _FromType &__arg)โ reference edition of the dynamic cast, she's versatile ๐void __error_type_must_be_a_signed_integer_type ()โ no args, no return, and the function name is the error message ๐ญ iconicvoid __error_type_must_be_an_integer_type ()โ same vibe, different complaint ๐งvoid __error_type_must_be_an_unsigned_integer_type ()โ and the unsigned one, completing the trio ๐_Atomic_word __exchange_and_add (volatile _Atomic_word *, int) noexceptโ exchange-and-add, returns_Atomic_word, and againnoexceptbecause she's drama-free ๐ฅ_Atomic_word __exchange_and_add_dispatch (_Atomic_word *__mem, int __val)โ dispatch flavor,__mem+__val, returns_Atomic_word๐_Atomic_word __exchange_and_add_single (_Atomic_word *__mem, int __val)โ the_singleone, same signature energy ๐ธtemplate<class _Concept > constexpr void __function_requires ()โconstexpr, returnsvoid, templated on a_Concept, zero arguments, maximum concept-check energy โจtemplate<typename _Type > constexpr bool __is_null_pointer (_Type *__ptr)โ pointer overload,constexpr bool, taking_Type *__ptr๐template<typename _Type > constexpr bool __is_null_pointer (_Type)โ non-pointer overload, stillconstexpr bool๐ซถconstexpr bool __is_null_pointer (std::nullptr_t)โ and thestd::nullptr_tspecial, honestly the main character of the three ๐bool __is_single_threaded () noexceptโ zero args,boolout,noexcept, giving "are we single-threaded" realness ๐template<typename _InputIterator1 , typename _InputIterator2 > int __lexicographical_compare_3way (_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2)โ three-way lexicographical compare, two iterator pairs,intreturn ๐int __lexicographical_compare_3way (const char *__first1, const char *__last1, const char *__first2, const char *__last2)โ theconst char *overload, same four args, sameintโญint __lexicographical_compare_3way (const unsigned char *__first1, const unsigned char *__last1, const unsigned char *__first2, const unsigned char *__last2)โ and theconst unsigned char *one, completing the set ๐ฆtemplate<typename _Tp > const _Tp & __median (const _Tp &__a, const _Tp &__b, const _Tp &__c)โ Find the median of three values. that's literally the whole job, three values in, median out ๐ฅ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. so you bring your own__compand she respects it ๐crope::reference __mutable_reference_at (crope &__c, std::size_t __i)โ takes acrope &__cand astd::size_t __i, hands back acrope::reference๐ธtemplate<typename _Tp , typename _Integer > _Tp __power (_Tp __x, _Integer __n)โ__power, base__x, exponent__n,_Tpall the way out โกtemplate<typename _Tp , typename _Integer , typename _MonoidOperation > _Tp __power (_Tp __x, _Integer __n, _MonoidOperation __monoid_op)โ same but you also pass a__monoid_op, fancy ๐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 time, you bring your own__randgenerator and aconst _Distance __n, returns the_RandomAccessIteratorout ๐ฒ vibestemplate<typename _InputIterator , typename _RandomAccessIterator , typename _Distance > _RandomAccessIterator __random_sample (_InputIterator __first, _InputIterator __last, _RandomAccessIterator __out, const _Distance __n)โ the no-generator version, same__first/__last/__out/__nlineup โจtemplate<typename _ToType , typename _FromType > _ToType __reinterpret_pointer_cast (_FromType *__arg)โ reinterpret pointer cast, pointer flavor,_ToTypereturned ๐template<typename _ToType , typename _FromType > _ToType __reinterpret_pointer_cast (const _FromType &__arg)โ reference flavor of the same, she contains multitudes ๐_Slist_node_base * __slist_make_link (_Slist_node_base *__prev_node, _Slist_node_base *__new_node)โ slist link-making, two_Slist_node_base *in, one out ๐_Slist_node_base * __slist_previous (_Slist_node_base *__head, const _Slist_node_base *__node)โ mutable__head,const__node, returns_Slist_node_base *๐ฆconst _Slist_node_base * __slist_previous (const _Slist_node_base *__head, const _Slist_node_base *__node)โ the fullyconstoverload, both argsconst,constreturn, she's keeping it pure โจ_Slist_node_base * __slist_reverse (_Slist_node_base *__node)โ reverse the slist,__nodein,_Slist_node_base *out ๐std::size_t __slist_size (_Slist_node_base *__node)โ size of the slist, returnsstd::size_t๐void __slist_splice_after (_Slist_node_base *__pos, _Slist_node_base *__before_first, _Slist_node_base *__before_last)โ splice-after with the range trio__pos,__before_first,__before_last๐ธvoid __slist_splice_after (_Slist_node_base *__pos, _Slist_node_base *__head)โ the shorter splice-after, just__posand__head๐template<typename _ToType , typename _FromType > _ToType __static_pointer_cast (_FromType *__arg)โ static pointer cast, pointer flavor, slay ๐ซถtemplate<typename _ToType , typename _FromType > _ToType __static_pointer_cast (const _FromType &__arg)โ reference flavor, same deal ๐size_t __stl_hash_string (const char *__s)โ STL hash a string,const char *__sin,size_tout ๐unsigned long __stl_next_prime (unsigned long __n)โ STL next prime,unsigned long __nin,unsigned longout, primes are lowkey iconic ๐ข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)โ okay this one is a whole meal bestie, variadic_Base..., a_TRet(*__convf)function pointer,__name,__str,__idx, the works, no notes ๐ฅvoid __throw_concurrence_lock_error ()โ zero args, throws the concurrence lock error, that's the whole personality ๐ญvoid __throw_concurrence_unlock_error ()โ same but unlock, the matching set ๐void __throw_forced_error ()โ forced error, literally named after the drama ๐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,...)โ__to_xstring, note the...varargs at the end, plus__convf,__n,__fmt, and a_CharTdefaulted from_String::value_typeโจtemplate<typename _InputIter , typename _Size , typename _ForwardIter > std::pair< _InputIter, _ForwardIter > __uninitialized_copy_n (_InputIter __first, _Size __count, _ForwardIter __result)โ uninitialized copy n,__first/__count/__result,std::pairreturn ๐template<typename _InputIter , typename _Size , typename _ForwardIter > std::pair< _InputIter, _ForwardIter > __uninitialized_copy_n (_InputIter __first, _Size __count, _ForwardIter __result, std::input_iterator_tag)โ same trio plusstd::input_iterator_tagdispatch ๐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)โ and thestd::random_access_iterator_tagone,_RandomAccessIterfront and center ๐ฆ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)โ the_aversion so you can pass an_Allocator __alloctoo ๐ธ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 >)โ and thestd::allocator< _Tp >overload, note the allocator arg has no name here, that's not a typo bestie ๐ซถvoid __verbose_terminate_handler ()โ A replacement for the standard terminate_handler which prints more information about the terminating exception (if any) on stderr. so when everything is on fire, this one spills the tea tostderr๐ฅ๐ญstd::size_t _Bit_scan_forward (std::size_t __num)โ Generic Version of the bsf instruction.std::size_t __numin,std::size_tout, bit-scanning realness โญtemplate<typename _ForwardIterator , typename _Allocator > void _Destroy_const (_ForwardIterator __first, _ForwardIterator __last, _Allocator __alloc)โ_Destroy_constwith__first,__last,__alloc๐template<typename _ForwardIterator , typename _Tp > void _Destroy_const (_ForwardIterator __first, _ForwardIterator __last, std::allocator< _Tp >)โ and thestd::allocator< _Tp >overload, again the allocator arg is unnamed ๐template<class _CharT , class _Traits > void _Rope_fill (std::basic_ostream< _CharT, _Traits > &__o, std::size_t __n)โ rope fill, takes the stream__oandstd::size_t __n๐template<class _CharT > bool _Rope_is_simple (_CharT *)โ_Rope_is_simple, templated,boolout โจbool _Rope_is_simple (char *)โ thechar *overload ๐bool _Rope_is_simple (wchar_t *)โ and thewchar_t *overload, trio complete ๐งtemplate<class _Rope_iterator > void _Rope_rotate (_Rope_iterator __first, _Rope_iterator __middle, _Rope_iterator __last)โ rope rotate with the classic__first,__middle,__lastlineup ๐template<class _CharT > void _S_cond_store_eos (_CharT &)โ cond store end-of-string, templated, returnsvoid๐void _S_cond_store_eos (char &__c)โ thechar &__coverload ๐void _S_cond_store_eos (wchar_t &__c)โ thewchar_t &__coverload, and that's all three ๐ซถtemplate<class _CharT > _CharT _S_eos (_CharT *)โ_S_eos, templated, returns_CharT๐ธtemplate<class _CharT > bool _S_is_basic_char_type (_CharT *)โ is-basic-char-type, templated,boolout โญbool _S_is_basic_char_type (char *)โ thechar *one ๐bool _S_is_basic_char_type (wchar_t *)โ and thewchar_t *one ๐ฆtemplate<class _CharT > bool _S_is_one_byte_char_type (_CharT *)โ one-byte-char-type check, templated,bool๐bool _S_is_one_byte_char_type (char *)โ thechar *overload, she only has two, that's it, that's the list ๐
okay and now the math girlies enter the chat ๐งฎโจ
template<typename _Tp > __gnu_cxx::__promote< _Tp >::__type airy_ai (_Tp __x)โairy_ai, templated, returns__gnu_cxx::__promote< _Tp >::__type, takes_Tp __x๐float airy_aif (float __x)โ thefloatone,airy_aif, returnsfloat๐long double airy_ail (long double __x)โ thelong doubleone, returnslong double๐ธtemplate<typename _Tp > __gnu_cxx::__promote< _Tp >::__type airy_bi (_Tp __x)โairy_bi, same promote-type return energy โจfloat airy_bif (float __x)โfloatflavor,airy_bif๐long double airy_bil (long double __x)โlong doubleflavor,airy_bil๐ซถtemplate<class _Operation1 , class _Operation2 > unary_compose< _Operation1, _Operation2 > compose1 (const _Operation1 &__fn1, const _Operation2 &__fn2)โ An SGI extension. composes__fn1and__fn2into aunary_compose, lowkey elegant ๐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. three functions, onebinary_compose, the sequel slaps ๐ฅtemplate<typename _Tpa , typename _Tpc , typename _Tp > __gnu_cxx::__promote_3< _Tpa, _Tpc, _Tp >::__type conf_hyperg (_Tpa __a, _Tpc __c, _Tp __x)โconf_hyperg, three separate types_Tpa/_Tpc/_Tp,__promote_3return ๐float conf_hypergf (float __a, float __c, float __x)โ thefloattrio version,conf_hypergf๐long double conf_hypergl (long double __a, long double __c, long double __x)โ thelong doubletrio version,conf_hyperglโญtemplate<class _Result > constant_void_fun< _Result > constant0 (const _Result &__val)โ An SGI extension.constant0, hands back aconstant_void_fun๐ฆtemplate<class _Result > constant_unary_fun< _Result, _Result > constant1 (const _Result &__val)โ An SGI extension.constant1, now it's aconstant_unary_funโจtemplate<class _Result > constant_binary_fun< _Result, _Result, _Result > constant2 (const _Result &__val)โ An SGI extension.constant2,constant_binary_funwith_Resultthree times because she's extra ๐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). so__firstplus__countgoes into__result, and you get thestd::pairback ๐template<typename _InputIterator , typename _Tp , typename _Size > void count (_InputIterator __first, _InputIterator __last, const _Tp &__value, _Size &__n)โcount, writes the tally into__n๐template<typename _InputIterator , typename _Predicate , typename _Size > void count_if (_InputIterator __first, _InputIterator __last, _Predicate __pred, _Size &__n)โcount_ifbut with a__pred, also dropping into__n๐ซถtemplate<typename _InputIterator , typename _Distance > void distance (_InputIterator __first, _InputIterator __last, _Distance &__n)โdistance,__firstto__last, result in__n๐ธ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)โhyperg, four types deep,__promote_4, she's committed ๐float hypergf (float __a, float __b, float __c, float __x)โfloatedition,hypergf๐long double hypergl (long double __a, long double __b, long double __c,โ and this is literally where the page cuts off bestie ๐ญ thelong double hyperglsignature with__a,__b,__c, and thenโฆ nothing. no cap, that's the end of this part. stay tuned ๐งโจ- and we're literally starting mid-signature ๐ญ the last one from before trails off here, so here's its tail:
long double __x)
identity_element(multiplication version) โ the "what's the neutral element forร" hook. An SGI extension โจ
template<class _Tp > _Tp identity_element (std::multiplies< _Tp >)
identity_element(addition version) โ same energy but for+. An SGI extension ๐
template<class _Tp > _Tp identity_element (std::plus< _Tp >)
lexicographical_compare_3wayโ bestie. it's literallymemcmpon steroids ๐ช
template<typename _InputIterator1 , typename _InputIterator2 > int
lexicographical_compare_3way (_InputIterator1 __first1,
_InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2
__last2)
mem_fun1(const flavor) โ wraps a const member function that takes one arg into astd::const_mem_fun1_t< _Ret, _Tp, _Arg >:
template<class _Ret , class _Tp , class _Arg > std::const_mem_fun1_t<
_Ret, _Tp, _Arg > mem_fun1 (_Ret(_Tp::*__f)(_Arg) const)
mem_fun1(non-const flavor) โ same deal, noconst, returnsstd::mem_fun1_t< _Ret, _Tp, _Arg >:
template<class _Ret , class _Tp , class _Arg > std::mem_fun1_t< _Ret,
_Tp, _Arg > mem_fun1 (_Ret(_Tp::*__f)(_Arg))
mem_fun1_ref(const flavor) โ the reference-y sibling, hands you astd::const_mem_fun1_ref_t< _Ret, _Tp, _Arg >:
template<class _Ret , class _Tp , class _Arg >
std::const_mem_fun1_ref_t< _Ret, _Tp, _Arg > mem_fun1_ref
(_Ret(_Tp::*__f)(_Arg) const)
mem_fun1_ref(non-const flavor) โ and the non-const one, givingstd::mem_fun1_ref_t< _Ret, _Tp, _Arg >:
template<class _Ret , class _Tp , class _Arg > std::mem_fun1_ref_t<
_Ret, _Tp, _Arg > mem_fun1_ref (_Ret(_Tp::*__f)(_Arg))
ok now the operator!= era ๐ (there are SO many, buckle up)
operator!=for_Pointer_adaptervs raw_Tp2โ not-equal check, pointer-adapter-on-the-left style:
template<typename _Tp1 , typename _Tp2 > bool operator!= (_Tp1 __lhs,
const _Pointer_adapter< _Tp2 > &__rhs)
operator!=for two__versa_strings โ 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)
operator!=for__versa_stringvs 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)
operator!=for 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)
operator!=for two_Pointer_adapters โ both sides adapter, no cap:
template<typename _Tp > bool operator!= (const _Pointer_adapter< _Tp >
&__lhs, const _Pointer_adapter< _Tp > &__rhs)
operator!=for_Pointer_adaptervsintโ adapter on the left, plaininton the right:
template<typename _Tp > bool operator!= (const _Pointer_adapter< _Tp >
&__lhs, int __rhs)
operator!=for_Pointer_adaptervs arbitrary_Tp2โ left is the adapter, right is whatever:
template<typename _Tp1 , typename _Tp2 > bool operator!= (const
_Pointer_adapter< _Tp1 > &__lhs, _Tp2 __rhs)
operator!=for two different_Pointer_adaptertypes โ_Tp1and_Tp2are not the same type, and that's the whole point ๐ฆ
template<typename _Tp1 , typename _Tp2 > bool operator!= (const
_Pointer_adapter< _Tp1 > &__lhs, const _Pointer_adapter< _Tp2 >
&__rhs)
operator!=for_Rope_char_ptr_proxyโ yep, even the rope char proxy gets a not-equal:
template<class _CharT , class _Alloc > bool operator!= (const
_Rope_char_ptr_proxy< _CharT, _Alloc > &__x, const
_Rope_char_ptr_proxy< _CharT, _Alloc > &__y)
operator!=for_Rope_const_iteratorโ comparing two const rope iterators, iconic:
template<class _CharT , class _Alloc > bool operator!= (const
_Rope_const_iterator< _CharT, _Alloc > &__x, const
_Rope_const_iterator< _CharT, _Alloc > &__y)
operator!=for_Rope_iteratorโ the non-const iterator version, equally slay:
template<class _CharT , class _Alloc > bool operator!= (const
_Rope_iterator< _CharT, _Alloc > &__x, const _Rope_iterator< _CharT,
_Alloc > &__y)
operator!=forhash_mapโ two whole hash maps, compared for difference:
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)
operator!=forhash_multimapโ same but the multi one, note the template params got renamed to_HF/_EqKey๐
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)
operator!=forhash_multisetโ multiset edition,_Val/_HashFcn/_EqualKey/_Alloc:
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)
operator!=forhash_setโ and the plain hash set, right after:
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)
operator!=forhashtableโ the lowkey main character underneath all of the above, six template params deep:
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)
operator!=forropeโ the big string, not equal:
template<class _CharT , class _Alloc > bool operator!= (const rope<
_CharT, _Alloc > &__x, const rope< _CharT, _Alloc > &__y)
operator!=forslistโ note the arg names are literally_SL1and_SL2, we love a naming choice ๐
template<class _Tp , class _Alloc > bool operator!= (const slist< _Tp,
_Alloc > &_SL1, const slist< _Tp, _Alloc > &_SL2)
operator!=withinton the left,_Pointer_adapteron the right โ the mirror of the earlier one:
template<typename _Tp > bool operator!= (int __lhs, const
_Pointer_adapter< _Tp > &__rhs)
arithmetic operators, we're in our math era ๐ฅ
operator*forthrow_value_baseโ multiplying two of them together:
template<typename _Cond > throw_value_base< _Cond > operator* (const
throw_value_base< _Cond > &__a, const throw_value_base< _Cond >
&__b)
operator+for two rvalue__versa_strings โ move-y plus move-y:
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)
operator+rvalue__versa_string+_CharTโ string-ish thing plus one 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)
operator+rvalue__versa_string+ const__versa_stringโ moving string plus lvalue 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)
operator+rvalue__versa_string+const _CharT *โ moving string plus a 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)
operator+_CharT+ rvalue__versa_stringโ character first this time:
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)
operator+_CharT+ 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)
operator+const__versa_string+ rvalue__versa_stringโ lvalue plus mover:
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)
operator+const__versa_string+_CharTโ 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)
operator+const__versa_string+ const__versa_stringโ Concatenate two strings. the classic ๐
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)
operator+const__versa_string+const _CharT *โ 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)
operator+const _CharT *+ rvalue__versa_stringโ C string then mover:
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)
operator+const _CharT *+ 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 arithmetic, aka the pointer math chapter ๐ง
operator+on_Rope_const_iterator+std::ptrdiff_tโ jump forward__n:
template<class _CharT , class _Alloc > _Rope_const_iterator< _CharT,
_Alloc > operator+ (const _Rope_const_iterator< _CharT, _Alloc >
&__x, std::ptrdiff_t __n)
operator+on_Rope_iterator+std::ptrdiff_tโ same jump, non-const iterator:
template<class _CharT , class _Alloc > _Rope_iterator< _CharT, _Alloc >
operator+ (const _Rope_iterator< _CharT, _Alloc > &__x,
std::ptrdiff_t __n)
operator+rope +_CharTโ rope, then one character on the end:
template<class _CharT , class _Alloc > rope< _CharT, _Alloc > operator+
(const rope< _CharT, _Alloc > &__left, _CharT __right)
operator+rope +const _CharT *โ rope, then a C string:
template<class _CharT , class _Alloc > rope< _CharT, _Alloc > operator+
(const rope< _CharT, _Alloc > &__left, const _CharT *__right)
operator+rope + rope โ two ropes, one concatenation, no notes ๐
template<class _CharT , class _Alloc > rope< _CharT, _Alloc > operator+
(const rope< _CharT, _Alloc > &__left, const rope< _CharT, _Alloc >
&__right)
operator+forthrow_value_baseโ adding two of them:
template<typename _Cond > throw_value_base< _Cond > operator+ (const
throw_value_base< _Cond > &__a, const throw_value_base< _Cond >
&__b)
operator+std::ptrdiff_t+_Rope_const_iteratorโ flipped order,__nfirst:
template<class _CharT , class _Alloc > _Rope_const_iterator< _CharT,
_Alloc > operator+ (std::ptrdiff_t __n, const _Rope_const_iterator<
_CharT, _Alloc > &__x)
operator+std::ptrdiff_t+_Rope_iteratorโ same but non-const:
template<class _CharT , class _Alloc > _Rope_iterator< _CharT, _Alloc >
operator+ (std::ptrdiff_t __n, const _Rope_iterator< _CharT, _Alloc
> &__x)
operator+difference_type+__normal_iteratorโ and it'sconstexprandnoexcept, she's got range and she's trustworthy ๐:
template<typename _Iterator , typename _Container > constexpr
__normal_iterator< _Iterator, _Container > operator+ (typename
__normal_iterator< _Iterator, _Container >::difference_type __n,
const __normal_iterator< _Iterator, _Container > &__i) noexcept
operator+= and operator- (yes they're different, bestie) ๐
operator+=rope +_CharTโ appends one character, returns the rope by reference:
template<class _CharT , class _Alloc > rope< _CharT, _Alloc > &
operator+= (rope< _CharT, _Alloc > &__left, _CharT __right)
operator+=rope +const _CharT *โ appends a C string, also by reference:
template<class _CharT , class _Alloc > rope< _CharT, _Alloc > &
operator+= (rope< _CharT, _Alloc > &__left, const _CharT *__right)
operator+=rope + rope โ appends a whole other rope:
template<class _CharT , class _Alloc > rope< _CharT, _Alloc > &
operator+= (rope< _CharT, _Alloc > &__left, const rope< _CharT,
_Alloc > &__right)
operator-between two__normal_iterators (same type) โ gives you thedifference_type,constexpr,noexcept:
template<typename _Iterator , typename _Container > constexpr
__normal_iterator< _Iterator, _Container >::difference_type
operator- (const __normal_iterator< _Iterator, _Container > &__lhs,
const __normal_iterator< _Iterator, _Container > &__rhs) noexcept
operator-between different__normal_iteratortypes โ_IteratorLand_IteratorR, with a trailing return type doingdecltype(__lhs.base() - __rhs.base()),constexpr+noexcepttoo:
template<typename _IteratorL , typename _IteratorR , typename _Container
> constexpr auto operator- (const __normal_iterator< _IteratorL,
_Container > &__lhs, const __normal_iterator< _IteratorR, _Container
> &__rhs) noexcept -> decltype(__lhs.base() - __rhs.base())
operator-on_Rope_const_iteratorโ returnsstd::ptrdiff_t... and the source honestly cuts off right here mid-signature ๐ญ
template<class _CharT , class _Alloc > std::ptrdiff_t operator- (const
_Rope_const_iterator< _CharT, _Alloc > &__x, const _Rope_const_iterator< _CharT, _Alloc > &__y)โ this is literally the tail end of the previous signature, bestie; the manpage split it mid-flex, not me ๐template<class _CharT , class _Alloc > _Rope_const_iterator< _CharT, _Alloc > operator- (const _Rope_const_iterator< _CharT, _Alloc > &__x, std::ptrdiff_t __n)โ rope-const-iterator math with astd::ptrdiff_toffset, iconic behavior only โจtemplate<class _CharT , class _Alloc > std::ptrdiff_t operator- (const _Rope_iterator< _CharT, _Alloc > &__x, const _Rope_iterator< _CharT, _Alloc > &__y)โ subtract two rope iterators and get astd::ptrdiff_t, no cap ๐ซถtemplate<class _CharT , class _Alloc > _Rope_iterator< _CharT, _Alloc > operator- (const _Rope_iterator< _CharT, _Alloc > &__x, std::ptrdiff_t __n)โ rope-iterator offset math, same vibe, different iterator ๐ซtemplate<typename _Cond > throw_value_base< _Cond > operator- (const throw_value_base< _Cond > &__a, const throw_value_base< _Cond > &__b)โ subtract twothrow_value_basethings and get one right back ๐ญtemplate<typename _Tp1 , typename _Tp2 > bool operator< (_Tp1 __lhs, const _Pointer_adapter< _Tp2 > &__rhs)โ less-than check where the right side is a_Pointer_adapter, yes/no energy ๐ฅ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)โ test if string precedes string, periodt ๐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 precedes C string, chefโs kiss ๐ธ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 precedes string, yup yup ๐ฆtemplate<typename _Tp1 , typename _Tp2 > bool operator< (const _Pointer_adapter< _Tp1 > &__lhs, _Tp2 __rhs)โ less-than where the left side is the_Pointer_adapter, cute ๐template<typename _Tp1 , typename _Tp2 > bool operator< (const _Pointer_adapter< _Tp1 > &__lhs, const _Pointer_adapter< _Tp2 > &__rhs)โ pointer-adapter vs pointer-adapter less-than, lowkey essential โญtemplate<class _CharT , class _Alloc > bool operator< (const _Rope_const_iterator< _CharT, _Alloc > &__x, const _Rope_const_iterator< _CharT, _Alloc > &__y)โ rope-const-iterator comparison, no drama ๐template<class _CharT , class _Alloc > bool operator< (const _Rope_iterator< _CharT, _Alloc > &__x, const _Rope_iterator< _CharT, _Alloc > &__y)โ rope-iterator comparison, same energy ๐template<typename _Value , typename _Int , typename _St > bool operator< (const character< _Value, _Int, _St > &lhs, const character< _Value, _Int, _St > &rhs)โ compare twocharacterobjects, iykyk ๐template<class _CharT , class _Alloc > bool operator< (const rope< _CharT, _Alloc > &__left, const rope< _CharT, _Alloc > &__right)โ rope vs rope, less-than edition ๐งtemplate<class _Tp , class _Alloc > bool operator< (const slist< _Tp, _Alloc > &_SL1, const slist< _Tp, _Alloc > &_SL2)โslistcomparison, main character energy ๐template<typename _Cond > bool operator< (const throw_value_base< _Cond > &__a, const throw_value_base< _Cond > &__b)โthrow_value_baseless-than, fr fr ๐template<class _CharT , class _Traits , class _Alloc > std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__o, const rope< _CharT, _Alloc > &__r)โ stream aropestraight into astd::basic_ostream, slay ๐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)โ stream abeta_distribution, cute โจ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)โ stream ahypergeometric_distribution, obsessed ๐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)โ stream anormal_mv_distribution, dimensionally iconic ๐ฆ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)โ stream the wholesimd_fast_mersenne_twister_engineflex, and yes every template parameter is invited to the party ๐ญ๐ฅ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)โ stream atriangular_distribution, triangle emoji energy ๐บโจ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)โ streamuniform_inside_sphere_distribution, inside-sphere but make it cout ๐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)โ streamuniform_on_sphere_distribution, on-sphere edition ๐ซง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)โ stream avon_mises_distribution, fancy name, fancy output ๐template<typename _CharT , typename _Traits , typename _StoreT > std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const _Pointer_adapter< _StoreT > &__p)โ stream a_Pointer_adapter, pointer-adjacent and proud ๐template<typename _RealType , typename _CharT , typename _Traits > std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const arcsine_distribution< _RealType > &__x)โ streamarcsine_distribution, trig-adjacent slay ๐ธtemplate<typename _RealType , typename _CharT , typename _Traits > std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const hoyt_distribution< _RealType > &__x)โ streamhoyt_distribution, niche but iconic ๐template<typename _RealType , typename _CharT , typename _Traits > std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const k_distribution< _RealType > &__x)โ streamk_distribution, single-letter legend ๐template<typename _RealType , typename _CharT , typename _Traits > std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const logistic_distribution< _RealType > &__x)โ streamlogistic_distribution, logistics but make it cute ๐ฆโจtemplate<typename _RealType , typename _CharT , typename _Traits > std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const nakagami_distribution< _RealType > &__x)โ streamnakagami_distribution, say it with your chest ๐ฃ๏ธtemplate<typename _RealType , typename _CharT , typename _Traits > std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const pareto_distribution< _RealType > &__x)โ streampareto_distribution, 80/20 vibes only ๐template<typename _RealType , typename _CharT , typename _Traits > std::basic_ostream< _CharT, _Traits > & operator<< (std::basic_ostream< _CharT, _Traits > &__os, const rice_distribution< _RealType > &__x)โ streamrice_distribution, grain-of-rice representation ๐๐ซstd::ostream & operator<< (std::ostream &os, const annotate_base &__b)โ stream anannotate_baseto a plainstd::ostream, straightforward king ๐template<typename _Tp1 , typename _Tp2 > bool operator<= (_Tp1 __lhs, const _Pointer_adapter< _Tp2 > &__rhs)โ less-than-or-equal where the right side is a_Pointer_adapter, yes ๐ซถ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)โ test if string doesnโt follow string, important distinction bestie ๐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 follow C string, got it ๐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 follow string, periodt ๐template<typename _Tp > bool operator<= (const _Pointer_adapter< _Tp > &__lhs, const _Pointer_adapter< _Tp > &__rhs)โ pointer-adapter vs pointer-adapter, less-or-equal edition โจtemplate<typename _Tp1 , typename _Tp2 > bool operator<= (const _Pointer_adapter< _Tp1 > &__lhs, _Tp2 __rhs)โ less-or-equal with a_Pointer_adapteron the left, cute ๐ธtemplate<typename _Tp1 , typename _Tp2 > bool operator<= (const _Pointer_adapter< _Tp1 > &__lhs, const _Pointer_adapter< _Tp2 > &__rhs)โ two different pointer-adapter types walk into a less-or-equal, no cap ๐ฆtemplate<class _CharT , class _Alloc > bool operator<= (const _Rope_const_iterator< _CharT, _Alloc > &__x, const _Rope_const_iterator< _CharT, _Alloc > &__y)โ rope-const-iterator less-or-equal, lowkey necessary ๐template<class _CharT , class _Alloc > bool operator<= (const _Rope_iterator< _CharT, _Alloc > &__x, const _Rope_iterator< _CharT, _Alloc > &__y)โ rope-iterator less-or-equal, same ๐ซtemplate<class _CharT , class _Alloc > bool operator<= (const rope< _CharT, _Alloc > &__x, const rope< _CharT, _Alloc > &__y)โ rope vs rope, less-or-equal, main character comparison ๐template<class _Tp , class _Alloc > bool operator<= (const slist< _Tp, _Alloc > &_SL1, const slist< _Tp, _Alloc > &_SL2)โslistless-or-equal, fr fr ๐งtemplate<typename _Iterator , typename _Container > constexpr std::__detail::__synth3way_t< _Iterator > operator<=> (const __normal_iterator< _Iterator, _Container > &__lhs, const __normal_iterator< _Iterator, _Container > &__rhs) noexcept(noexcept(std::__detail::__synth3way(__lhs.base(), __rhs.base())))โ spaceship operator for__normal_iterator, three-way comparison with anoexceptflex, we love to see it ๐template<typename _IteratorL , typename _IteratorR , typename _Container > constexpr std::__detail::__synth3way_t< _IteratorR, _IteratorL > operator<=> (const __normal_iterator< _IteratorL, _Container > &__lhs, const __normal_iterator< _IteratorR, _Container > &__rhs) noexcept(noexcept(std::__detail::__synth3way(__lhs.base(), __rhs.base())))โ mixed-iterator spaceship operator,_IteratorLvs_IteratorR, and yes itโs stillconstexpr๐template<typename _Tp1 , typename _Tp2 > bool operator== (_Tp1 __lhs, const _Pointer_adapter< _Tp2 > &__rhs)โ equality check with a_Pointer_adapteron the right, iconic โจ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)โ do twonormal_mv_distributions match? big question, big answer ๐- `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,
โฆand boom, that's the tail end of the previous one โ the last chunk of the simd_fast_mersenne_twister_engine signature, finishing on __rhs like it's closing a text:
const __gnu_cxx::simd_fast_mersenne_twister_engine< _UIntType, __m, __pos1, __sl1, __sl2, __sr1, __sr2, __msk1, __msk2, __msk3, __msk4, __parity1, __parity2, __parity3, __parity4 > &__rhs)
๐ operator== era, she's the main character ๐
okay so now we're doing equality checks, and there are so many of them. buckle up bestie ๐ธ
operator==for__mt_allocโ the allocator gets her equality check, both_Tpand_Poolpaccounted for:
template<typename _Tp , typename _Poolp > bool operator== (const __mt_alloc< _Tp, _Poolp > &, const __mt_alloc< _Tp, _Poolp > &)
operator==for__normal_iterator, same type on both sides โ she'sconstexpr, she'snoexcept, and she's gated by arequiresclause that literally checks the==actually converts tobool. iconic:
template<typename _Iterator , typename _Container > requires requires { { __lhs.base() == __rhs.base() } -> std::convertible_to<bool>; }constexpr bool operator== (const __normal_iterator< _Iterator, _Container > &__lhs, const __normal_iterator< _Iterator, _Container > &__rhs) noexcept(noexcept(__lhs.base()==__rhs.base()))"
bestie yes there's a rogue " hanging off the end of those two signatures in the source. she lives there. we don't ask. ๐
operator==for__normal_iterator, two different iterator types โ same constraint-energy,_IteratorLvs_IteratorR:
template<typename _IteratorL , typename _IteratorR , typename _Container > requires requires { { __lhs.base() == __rhs.base() } -> std::convertible_to<bool>; }constexpr bool operator== (const __normal_iterator< _IteratorL, _Container > &__lhs, const __normal_iterator< _IteratorR, _Container > &__rhs) noexcept(noexcept(__lhs.base()==__rhs.base()))"
operator==for__pool_allocโ pool allocator equality, no notes:
template<typename _Tp > bool operator== (const __pool_alloc< _Tp > &, const __pool_alloc< _Tp > &)
operator==:__versa_stringvs__versa_stringโ test equivalence 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)
operator==:__versa_stringvs C string โ test equivalence 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)
operator==: C string vs__versa_stringโ test equivalence of C string and string, the flip side, we love a symmetrical queen:
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)
operator==:_Pointer_adaptervs_Pointer_adapter, same_Tp:
template<typename _Tp > bool operator== (const _Pointer_adapter< _Tp > &__lhs, const _Pointer_adapter< _Tp > &__rhs)
operator==:_Pointer_adaptervs a plainintโ yes, anint, that's the vibe:
template<typename _Tp > bool operator== (const _Pointer_adapter< _Tp > &__lhs, int __rhs)
operator==:_Pointer_adaptervs literally any_Tp2:
template<typename _Tp1 , typename _Tp2 > bool operator== (const _Pointer_adapter< _Tp1 > &__lhs, _Tp2 __rhs)
operator==:_Pointer_adaptervs a different_Pointer_adapterโ cross-type, cross-_Tp, cross-everything:
template<typename _Tp1 , typename _Tp2 > bool operator== (const _Pointer_adapter< _Tp1 > &__lhs, const _Pointer_adapter< _Tp2 > &__rhs)
operator==for_Rope_char_ptr_proxyโ__xvs__y, the classic duo:
template<class _CharT , class _Alloc > bool operator== (const _Rope_char_ptr_proxy< _CharT, _Alloc > &__x, const _Rope_char_ptr_proxy< _CharT, _Alloc > &__y)
operator==for_Rope_const_iteratorโ same energy, const edition:
template<class _CharT , class _Alloc > bool operator== (const _Rope_const_iterator< _CharT, _Alloc > &__x, const _Rope_const_iterator< _CharT, _Alloc > &__y)
operator==for_Rope_iteratorโ and the non-const one, she's here too:
template<class _CharT , class _Alloc > bool operator== (const _Rope_iterator< _CharT, _Alloc > &__x, const _Rope_iterator< _CharT, _Alloc > &__y)
operator==forbitmap_allocatorโ two different_Tps and she's still throwing athrow ()on the end like it's 2003 (because it is) ๐
template<typename _Tp1 , typename _Tp2 > bool operator== (const bitmap_allocator< _Tp1 > &, const bitmap_allocator< _Tp2 > &) throw ()
operator==forcharacterโ she takeslhsandrhs, actually named, so polite:
template<typename _Value , typename _Int , typename _St > bool operator== (const character< _Value, _Int, _St > &lhs, const character< _Value, _Int, _St > &rhs)
operator==forhash_mapโ__hm1vs__hm2, five template params, zero chill:
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)
operator==forhash_multimapโ same shape,_HF/_EqKeynames this time, don't get it twisted:
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)
operator==forhash_multisetโ__hs1and__hs2:
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)
operator==forhash_setโ and yes, the first template param here is_Value, not_Val, because consistency is a myth:
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)
operator==forhashtableโ six params deep,__ht1vs__ht2, the final boss of hashing:
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)
operator==forropeโ__leftand__right, she's giving directions:
template<class _CharT , class _Alloc > bool operator== (const rope< _CharT, _Alloc > &__left, const rope< _CharT, _Alloc > &__right)
operator==forslistโ_SL1vs_SL2, capital letters and all:
template<class _Tp , class _Alloc > bool operator== (const slist< _Tp, _Alloc > &_SL1, const slist< _Tp, _Alloc > &_SL2)
operator==forthrow_allocator_baseโ anonymous params, she doesn't need names:
template<typename _Tp , typename _Cond > bool operator== (const throw_allocator_base< _Tp, _Cond > &, const throw_allocator_base< _Tp, _Cond > &)
operator==forthrow_value_baseโ__avs__b, short and sweet:
template<typename _Cond > bool operator== (const throw_value_base< _Cond > &__a, const throw_value_base< _Cond > &__b)
operator==withinton the left โ the flip, because apparently we needed both:
template<typename _Tp > bool operator== (int __lhs, const _Pointer_adapter< _Tp > &__rhs)
๐ฅ operator> section, she's comparing ๐ฅ
operator>: anything vs_Pointer_adapterโ_Tp1 __lhsby value, no constraints, just vibes:
template<typename _Tp1 , typename _Tp2 > bool operator> (_Tp1 __lhs, const _Pointer_adapter< _Tp2 > &__rhs)
operator>:__versa_stringvs__versa_stringโ 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 __versa_string< _CharT, _Traits, _Alloc, _Base > &__rhs)
operator>:__versa_stringvs C string โ test if string follows 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)
operator>: C string vs__versa_stringโ test if C string follows 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)
operator>:_Pointer_adaptervs same_Pointer_adapter:
template<typename _Tp > bool operator> (const _Pointer_adapter< _Tp > &__lhs, const _Pointer_adapter< _Tp > &__rhs)
operator>:_Pointer_adaptervs a raw_Tp2:
template<typename _Tp1 , typename _Tp2 > bool operator> (const _Pointer_adapter< _Tp1 > &__lhs, _Tp2 __rhs)
operator>:_Pointer_adaptervs a different_Pointer_adapter:
template<typename _Tp1 , typename _Tp2 > bool operator> (const _Pointer_adapter< _Tp1 > &__lhs, const _Pointer_adapter< _Tp2 > &__rhs)
operator>for_Rope_const_iteratorโ__xand__yagain, we know the drill:
template<class _CharT , class _Alloc > bool operator> (const _Rope_const_iterator< _CharT, _Alloc > &__x, const _Rope_const_iterator< _CharT, _Alloc > &__y)
operator>for_Rope_iterator:
template<class _CharT , class _Alloc > bool operator> (const _Rope_iterator< _CharT, _Alloc > &__x, const _Rope_iterator< _CharT, _Alloc > &__y)
operator>forropeโ she's back and still named__x/__y:
template<class _CharT , class _Alloc > bool operator> (const rope< _CharT, _Alloc > &__x, const rope< _CharT, _Alloc > &__y)
operator>forslistโ_SL1>_SL2, go off:
template<class _Tp , class _Alloc > bool operator> (const slist< _Tp, _Alloc > &_SL1, const slist< _Tp, _Alloc > &_SL2)
๐ฆ operator>= girlies ๐ฆ
operator>=:_Tp1vs_Pointer_adapter<_Tp2>โ same vibe as her sister, different glyph:
template<typename _Tp1 , typename _Tp2 > bool operator>= (_Tp1 __lhs, const _Pointer_adapter< _Tp2 > &__rhs)
operator>=:__versa_stringvs__versa_stringโ 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 __versa_string< _CharT, _Traits, _Alloc, _Base > &__rhs)
operator>=:__versa_stringvs C string โ test if string doesn't precede 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)
operator>=: C string vs__versa_stringโ test if C string doesn't precede 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)
operator>=:_Pointer_adaptervs same_Pointer_adapter:
template<typename _Tp > bool operator>= (const _Pointer_adapter< _Tp > &__lhs, const _Pointer_adapter< _Tp > &__rhs)
operator>=:_Pointer_adaptervs raw_Tp2:
template<typename _Tp1 , typename _Tp2 > bool operator>= (const _Pointer_adapter< _Tp1 > &__lhs, _Tp2 __rhs)
operator>=:_Pointer_adaptervs another_Pointer_adapter:
template<typename _Tp1 , typename _Tp2 > bool operator>= (const _Pointer_adapter< _Tp1 > &__lhs, const _Pointer_adapter< _Tp2 > &__rhs)
operator>=for_Rope_const_iterator:
template<class _CharT , class _Alloc > bool operator>= (const _Rope_const_iterator< _CharT, _Alloc > &__x, const _Rope_const_iterator< _CharT, _Alloc > &__y)
operator>=for_Rope_iterator:
template<class _CharT , class _Alloc > bool operator>= (const _Rope_iterator< _CharT, _Alloc > &__x, const _Rope_iterator< _CharT, _Alloc > &__y)
operator>=forrope:
template<class _CharT , class _Alloc > bool operator>= (const rope< _CharT, _Alloc > &__x, const rope< _CharT, _Alloc > &__y)
operator>=forslist:
template<class _Tp , class _Alloc > bool operator>= (const slist< _Tp, _Alloc > &_SL1, const slist< _Tp, _Alloc > &_SL2)
๐ operator>> โ stream extraction, read her in ๐
operator>>forbeta_distributionโ reads into__xfrom__is:
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)
operator>>forhypergeometric_distributionโ_UIntTypethis time, not_RealType, keep up ๐ซถ
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)
operator>>fornormal_mv_distributionโ note the_Dimenparam is plainsize_there:
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)
operator>>forsimd_fast_mersenne_twister_engineโ the long one, all fifteen engine params spelled out,uint32_tmasks and parities included:
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)
operator>>fortriangular_distributionโ clean,_RealType, done:
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)
- one more
operator>>, and she's mid-sentence ๐ญ โstd::size_t _Dimenthis time, and the signature justโฆ stops after__is,. she gets finished in a sec, hold on:
template<std::size_t _Dimen, typename _RealType , typename _CharT , typename _Traits > std::basic_istream< _CharT, _Traits > & operator>> (std::basic_istream< _CharT, _Traits > &__is,
okay bestie we are STILL deep in the function-declaration pile and it is giving โจinfinite overload energyโจ. Picking up mid-signature, no cap:
__gnu_cxx::uniform_inside_sphere_distribution< _Dimen, _RealType >
&__x)
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)
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)
template<typename _RealType , typename _CharT , typename _Traits >
std::basic_istream< _CharT, _Traits > & operator>>
(std::basic_istream< _CharT, _Traits > &__is, arcsine_distribution<
_RealType > &__x)
template<typename _RealType , typename _CharT , typename _Traits >
std::basic_istream< _CharT, _Traits > & operator>>
(std::basic_istream< _CharT, _Traits > &__is, hoyt_distribution<
_RealType > &__x)
template<typename _RealType , typename _CharT , typename _Traits >
std::basic_istream< _CharT, _Traits > & operator>>
(std::basic_istream< _CharT, _Traits > &__is, k_distribution<
_RealType > &__x)
template<typename _RealType , typename _CharT , typename _Traits >
std::basic_istream< _CharT, _Traits > & operator>>
(std::basic_istream< _CharT, _Traits > &__is, logistic_distribution<
_RealType > &__x)
template<typename _RealType , typename _CharT , typename _Traits >
std::basic_istream< _CharT, _Traits > & operator>>
(std::basic_istream< _CharT, _Traits > &__is, nakagami_distribution<
_RealType > &__x)
template<typename _RealType , typename _CharT , typename _Traits >
std::basic_istream< _CharT, _Traits > & operator>>
(std::basic_istream< _CharT, _Traits > &__is, pareto_distribution<
_RealType > &__x)
template<typename _RealType , typename _CharT , typename _Traits >
std::basic_istream< _CharT, _Traits > & operator>>
(std::basic_istream< _CharT, _Traits > &__is, rice_distribution<
_RealType > &__x)
Thatโs the stream-extraction crew for the sphere / von Mises / arcsine / hoyt / k / logistic / nakagami / pareto / rice distributions. Slay. ๐ซถ
Next up, the power + random + rotate section:
template<typename _Tp , typename _Integer > _Tp power (_Tp __x, _Integer
__n)
template<typename _Tp , typename _Integer , typename _MonoidOperation >
_Tp power (_Tp __x, _Integer __n, _MonoidOperation __monoid_op)
template<typename _InputIterator , typename _RandomAccessIterator >
_RandomAccessIterator random_sample (_InputIterator __first,
_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)
power, random_sample, random_sample_n, rotate โ we see you and we are obsessed. ๐
And now the swap overloads, which are lowkey the main characters of this chunk:
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)
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.
Not me reading every single swap overload like itโs a group chat recap ๐ญ but bestie, theyโre all here. Including uninitialized_copy_n, which โCopies the range [first,last) into result.โ Fr fr.
๐งธ Variables
- the lock policy variable:
const _Lock_policy __default_lock_policy
- the identity element for ropes:
template<class _CharT , class _Alloc > rope< _CharT, _Alloc >
identity_element (_Rope_Concat_fn< _CharT, _Alloc >)
๐ Detailed Description
GNU extensions for public use. Periodt. ๐
๐ Typedef Documentation
template<typename _Tp > using __gnu_cxx::__int_traits = typedef
__numeric_traits_integer<_Tp>
Convenience alias for __numeric_traits<integer-type>. Cute, short, iconic. โจ
๐ Function Documentation
๐ซ __static_pointer_cast โ standard pointer edition
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.
๐ซ __static_pointer_cast โ not-a-standard-pointer edition
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.
bestie this one has requirements โ donโt skip theget()andelement_typepart, iykyk.
๐ซ _Bit_scan_forward
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< _Tp >::_M_allocate_single_object().
๐ซ operator!= โ string vs. 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 difference of two strings.
Parameters
__lhsโ First string.__rhsโ Second string.
Returns True if __lhs.compare(__rhs) != 0. False otherwise.
๐ซ operator!= โ 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 difference of string and C string.
Parameters
__lhsโ String.__rhsโ C string.
Returns True if __lhs.compare(__rhs) != 0. False otherwise.
๐ซ operator!= โ C string vs. 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 difference of C string and string.
Parameters
__lhsโ C string.__rhsโ String.
Returns True if __rhs.compare(__lhs) != 0. False otherwise.
๐ซ operator+ โ character + 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 character and string.
Parameters
__lhsโ First string.__rhsโ Last string.
Returns 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().
๐ซ operator+ โ string + character
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 string and character.
Parameters
__lhsโ First string.__rhsโ Last string.
Returns 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().
๐ซ operator+ โ string + 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.
Parameters
__lhsโ First string.__rhsโ Last string.
Returns New string with 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().
okay, final stretch of the function docs โ operators and swap, letโs get into it ๐ซถ
๐ operator+ โ 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 string and C string โ thatโs the whole cute little job ๐
- Parameters
__lhsโ First string.__rhsโ Last string.
- Returns โ New string with
__lhsfollowed by__rhs. - References โ
__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::size().
๐ฆ operator+ โ C string + 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 C string and string โ yes bestie, this is the flipped version and it still slays โจ
- Parameters
__lhsโ First string.__rhsโ Last string.
- Returns โ New string with value of
__lhsfollowed by__rhs. - References โ
__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::size().
๐ธ operator< โ string vs 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 string precedes string โ the classic โwho comes firstโ vibe check ๐
- Parameters
__lhsโ First string.__rhsโ Second string.
- Returns โ
trueif__lhsprecedes__rhs.falseotherwise. - References โ
__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare().
๐ operator< โ 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 string precedes C string โ same energy, one side is just a C string this time ๐ซ
- Parameters
__lhsโ String.__rhsโ C string.
- Returns โ
trueif__lhsprecedes__rhs.falseotherwise. - References โ
__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare().
๐ง operator< โ C string vs 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 C string precedes string โ the C string is on the left this time, no cap ๐ฅ
- Parameters
__lhsโ C string.__rhsโ String.
- Returns โ
trueif__lhsprecedes__rhs.falseotherwise. - References โ
__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare().
๐ operator<= โ string vs 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 string doesnโt follow string โ itโs the โless than or equalโ bestie, serving <= realness ๐
- Parameters
__lhsโ First string.__rhsโ Second string.
- Returns โ
trueif__lhsdoesnโt follow__rhs.falseotherwise. - References โ
__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare().
๐ operator<= โ 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 string doesnโt follow C string โ keeping the <= agenda alive and iconic โญ
- Parameters
__lhsโ String.__rhsโ C string.
- Returns โ
trueif__lhsdoesnโt follow__rhs.falseotherwise. - References โ
__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare().
๐ operator<= โ C string vs 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 C string doesnโt follow string โ yes, the C string is main character on the left now ๐
- Parameters
__lhsโ C string.__rhsโ String.
- Returns โ
trueif__lhsdoesnโt follow__rhs.falseotherwise. - References โ
__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare().
๐ operator== โ string vs 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 equivalence of two strings โ are they literally the same? Letโs find out ๐
- Parameters
__lhsโ First string.__rhsโ Second string.
- Returns โ
trueif__lhs.compare(__rhs) == 0.falseotherwise. - References โ
__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::data(), and__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::size().
โจ operator== โ 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 equivalence of string and C string โ matching vibes only, bestie ๐
- Parameters
__lhsโ String.__rhsโ C string.
- Returns โ
trueif__lhs.compare(__rhs) == 0.falseotherwise. - References โ
__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::data(), and__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::size().
๐ซถ operator== โ C string vs 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 equivalence of C string and string โ same check, flipped order, still valid ๐ซถ
- Parameters
__lhsโ C string.__rhsโ String.
- Returns โ
trueif__rhs.compare(__lhs) == 0.falseotherwise.
๐ operator== โ _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. So itโs giving โlet the base class handle itโ energy ๐ซ
๐ operator> โ string vs 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 string follows string โ yes, weโre doing the greater-than check now, periodt ๐
- Parameters
__lhsโ First string.__rhsโ Second string.
- Returns โ
trueif__lhsfollows__rhs.falseotherwise. - References โ
__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare().
๐ฅ operator> โ 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 string follows C string โ C string is in the passenger seat this time ๐
- Parameters
__lhsโ String.__rhsโ C string.
- Returns โ
trueif__lhsfollows__rhs.falseotherwise. - References โ
__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare().
๐ซ operator> โ C string vs 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 C string follows string โ the C string said โIโll go firstโ and honestly? iconic ๐
- Parameters
__lhsโ C string.__rhsโ String.
- Returns โ
trueif__lhsfollows__rhs.falseotherwise. - References โ
__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare().
๐ธ operator>= โ string vs 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 string doesnโt precede string โ greater-than-or-equal, but make it cute ๐
- 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>= โ 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 string doesnโt precede C string โ the >= saga continues, and weโre seated ๐ฟ
- Parameters
__lhsโ String.__rhsโ C string.
- Returns โ
trueif__lhsdoesnโt precede__rhs.falseotherwise. - References โ
__gnu_cxx::__versa_string< _CharT, _Traits, _Alloc, _Base >::compare().
๐ฆ operator>= โ C string vs 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 C string doesnโt precede string โ final >= flavor, and yes, it ate ๐
- 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 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]
Swap contents of two strings โ trading places, bestie ๐
- Parameters
__lhsโ First string.__rhsโ Second string.
Exchanges the contents of __lhs and __rhs in constant time. Constant time!! We love efficiency ๐
- 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 page, bestie ๐ source/version tea: this is libstdc++, and the page is stamped __gnu_cxx(3cxx). The footer doesnโt print a date, so weโre not inventing one โ periodt ๐
โจ
๐ฆ where this page comes from
- ubuntu noble: libstdc++-14-doc 14-20240412-0ubuntu1
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms