__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_cxx namespace 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 __pool objects. 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 _Tp dependent member functions. Base-class business. ๐Ÿงฑ
  • struct __per_type_pool_policy โ€” policy for individual __pool objects. 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, via gthreads.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 a std::map between 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 implement std::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 use iconv for 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 the bitmap_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 uses malloc. malloc girlie. ๐Ÿง 
  • class new_allocator โ€” an allocator that uses global new, 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 an allocator_type in 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 a value_type in 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_string
  • typedef __vstring __sso_string
  • typedef __versa_string< char16_t, std::char_traits< char16_t >, std::allocator< char16_t >, __rc_string_base > __u16rc_string
  • typedef __u16vstring __u16sso_string
  • typedef __versa_string< char16_t > __u16vstring
  • typedef __versa_string< char32_t, std::char_traits< char32_t >, std::allocator< char32_t >, __rc_string_base > __u32rc_string
  • typedef __u32vstring __u32sso_string
  • typedef __versa_string< char32_t > __u32vstring
  • typedef __versa_string< char > __vstring
  • typedef __versa_string< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t >, __rc_string_base > __wrc_string
  • typedef __wvstring __wsso_string
  • typedef __versa_string< wchar_t > __wvstring
  • typedef rope< char > crope
  • typedef 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's noexcept so it is not about to throw hands ๐Ÿ™…โ€โ™€๏ธ
  • void __atomic_add_dispatch (_Atomic_word *__mem, int __val) โ€” the dispatch-y version, takes __mem and __val ๐ŸŒธ
  • void __atomic_add_single (_Atomic_word *__mem, int __val) โ€” the _single flavored one, same __mem + __val duo ๐Ÿซถ
  • template<class _Tp > void __aux_require_boolean_expr (const _Tp &__t) โ€” templated on _Tp, takes const _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 &__arg bestie ๐Ÿ’–
  • 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 with the std::input_iterator_tag dispatch, hands you back a std::pair of 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, same std::pair return ๐ŸŒˆ
  • template<typename _InputIterator , typename _Distance > void __distance (_InputIterator __first, _InputIterator __last, _Distance &__n, std::input_iterator_tag) โ€” __distance for 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, _ToType out ๐Ÿ’…
  • 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 ๐Ÿ˜ญ iconic
  • void __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 again noexcept because 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 _single one, same signature energy ๐ŸŒธ
  • template<class _Concept > constexpr void __function_requires () โ€” constexpr, returns void, 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, still constexpr bool ๐Ÿซถ
  • constexpr bool __is_null_pointer (std::nullptr_t) โ€” and the std::nullptr_t special, honestly the main character of the three ๐Ÿ‘‘
  • bool __is_single_threaded () noexcept โ€” zero args, bool out, 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, int return ๐ŸŒˆ
  • int __lexicographical_compare_3way (const char *__first1, const char *__last1, const char *__first2, const char *__last2) โ€” the const char * overload, same four args, same int โญ
  • int __lexicographical_compare_3way (const unsigned char *__first1, const unsigned char *__last1, const unsigned char *__first2, const unsigned char *__last2) โ€” and the const 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 __comp and she respects it ๐Ÿ’…
  • crope::reference __mutable_reference_at (crope &__c, std::size_t __i) โ€” takes a crope &__c and a std::size_t __i, hands back a crope::reference ๐ŸŒธ
  • template<typename _Tp , typename _Integer > _Tp __power (_Tp __x, _Integer __n) โ€” __power, base __x, exponent __n, _Tp all 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 __rand generator and a const _Distance __n, returns the _RandomAccessIterator out ๐ŸŽฒ vibes
  • template<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/__n lineup โœจ
  • template<typename _ToType , typename _FromType > _ToType __reinterpret_pointer_cast (_FromType *__arg) โ€” reinterpret pointer cast, pointer flavor, _ToType returned ๐Ÿ™ˆ
  • 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 fully const overload, both args const, const return, she's keeping it pure โœจ
  • _Slist_node_base * __slist_reverse (_Slist_node_base *__node) โ€” reverse the slist, __node in, _Slist_node_base * out ๐Ÿ”„
  • std::size_t __slist_size (_Slist_node_base *__node) โ€” size of the slist, returns std::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 __pos and __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 *__s in, size_t out ๐Ÿ“
  • unsigned long __stl_next_prime (unsigned long __n) โ€” STL next prime, unsigned long __n in, unsigned long out, 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 _CharT defaulted 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::pair return ๐ŸŽ€
  • 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 plus std::input_iterator_tag dispatch ๐Ÿ’…
  • 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 the std::random_access_iterator_tag one, _RandomAccessIter front 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 _a version so you can pass an _Allocator __alloc too ๐ŸŒธ
  • 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 the std::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 to stderr ๐Ÿ”ฅ๐Ÿ˜ญ
  • std::size_t _Bit_scan_forward (std::size_t __num) โ€” Generic Version of the bsf instruction. std::size_t __num in, std::size_t out, bit-scanning realness โญ
  • template<typename _ForwardIterator , typename _Allocator > void _Destroy_const (_ForwardIterator __first, _ForwardIterator __last, _Allocator __alloc) โ€” _Destroy_const with __first, __last, __alloc ๐ŸŽ€
  • template<typename _ForwardIterator , typename _Tp > void _Destroy_const (_ForwardIterator __first, _ForwardIterator __last, std::allocator< _Tp >) โ€” and the std::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 __o and std::size_t __n ๐ŸŒˆ
  • template<class _CharT > bool _Rope_is_simple (_CharT *) โ€” _Rope_is_simple, templated, bool out โœจ
  • bool _Rope_is_simple (char *) โ€” the char * overload ๐Ÿ“
  • bool _Rope_is_simple (wchar_t *) โ€” and the wchar_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, __last lineup ๐Ÿ”„
  • template<class _CharT > void _S_cond_store_eos (_CharT &) โ€” cond store end-of-string, templated, returns void ๐ŸŽ€
  • void _S_cond_store_eos (char &__c) โ€” the char &__c overload ๐Ÿ’–
  • void _S_cond_store_eos (wchar_t &__c) โ€” the wchar_t &__c overload, 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, bool out โญ
  • bool _S_is_basic_char_type (char *) โ€” the char * one ๐ŸŒˆ
  • bool _S_is_basic_char_type (wchar_t *) โ€” and the wchar_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 *) โ€” the char * 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) โ€” the float one, airy_aif, returns float ๐ŸŽ€
  • long double airy_ail (long double __x) โ€” the long double one, returns long 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) โ€” float flavor, airy_bif ๐Ÿ’–
  • long double airy_bil (long double __x) โ€” long double flavor, airy_bil ๐Ÿซถ
  • template<class _Operation1 , class _Operation2 > unary_compose< _Operation1, _Operation2 > compose1 (const _Operation1 &__fn1, const _Operation2 &__fn2) โ€” An SGI extension. composes __fn1 and __fn2 into a unary_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, one binary_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_3 return ๐Ÿ’…
  • float conf_hypergf (float __a, float __c, float __x) โ€” the float trio version, conf_hypergf ๐ŸŒˆ
  • long double conf_hypergl (long double __a, long double __c, long double __x) โ€” the long double trio version, conf_hypergl โญ
  • template<class _Result > constant_void_fun< _Result > constant0 (const _Result &__val) โ€” An SGI extension. constant0, hands back a constant_void_fun ๐Ÿฆ‹
  • template<class _Result > constant_unary_fun< _Result, _Result > constant1 (const _Result &__val) โ€” An SGI extension. constant1, now it's a constant_unary_fun โœจ
  • template<class _Result > constant_binary_fun< _Result, _Result, _Result > constant2 (const _Result &__val) โ€” An SGI extension. constant2, constant_binary_fun with _Result three 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 __first plus __count goes into __result, and you get the std::pair back ๐ŸŽ€
  • 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_if but with a __pred, also dropping into __n ๐Ÿซถ
  • template<typename _InputIterator , typename _Distance > void distance (_InputIterator __first, _InputIterator __last, _Distance &__n) โ€” distance, __first to __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) โ€” float edition, hypergf ๐Ÿ“
  • long double hypergl (long double __a, long double __b, long double __c, โ€” and this is literally where the page cuts off bestie ๐Ÿ˜ญ the long double hypergl signature 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 literally memcmp on 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 a std::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, no const, returns std::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 a std::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, giving std::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_adapter vs 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_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)
  • 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_adapter vs int โ€” adapter on the left, plain int on the right:
template<typename _Tp > bool operator!= (const _Pointer_adapter< _Tp >
&__lhs, int __rhs)
  • operator!= for _Pointer_adapter vs 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_adapter types โ€” _Tp1 and _Tp2 are 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!= for hash_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!= for hash_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!= for hash_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!= for hash_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!= for hashtable โ€” 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!= for rope โ€” the big string, not equal:
template<class _CharT , class _Alloc > bool operator!= (const rope<
_CharT, _Alloc > &__x, const rope< _CharT, _Alloc > &__y)
  • operator!= for slist โ€” note the arg names are literally _SL1 and _SL2, we love a naming choice ๐Ÿ™ˆ
template<class _Tp , class _Alloc > bool operator!= (const slist< _Tp,
_Alloc > &_SL1, const slist< _Tp, _Alloc > &_SL2)
  • operator!= with int on the left, _Pointer_adapter on 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* for throw_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+ for throw_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, __n first:
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's constexpr and noexcept, 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 the difference_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_iterator types โ€” _IteratorL and _IteratorR, with a trailing return type doing decltype(__lhs.base() - __rhs.base()), constexpr + noexcept too:
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 โ€” returns std::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 a std::ptrdiff_t offset, 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 a std::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 two throw_value_base things 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 two character objects, 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) โ€” slist comparison, main character energy ๐Ÿ‘‘
  • template<typename _Cond > bool operator< (const throw_value_base< _Cond > &__a, const throw_value_base< _Cond > &__b) โ€” throw_value_base less-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 a rope straight into a std::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 a beta_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 a hypergeometric_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 a normal_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 whole simd_fast_mersenne_twister_engine flex, 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 a triangular_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) โ€” stream uniform_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) โ€” stream uniform_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 a von_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) โ€” stream arcsine_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) โ€” stream hoyt_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) โ€” stream k_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) โ€” stream logistic_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) โ€” stream nakagami_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) โ€” stream pareto_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) โ€” stream rice_distribution, grain-of-rice representation ๐Ÿš๐Ÿ’ซ
  • std::ostream & operator<< (std::ostream &os, const annotate_base &__b) โ€” stream an annotate_base to a plain std::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_adapter on 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) โ€” slist less-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 a noexcept flex, 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, _IteratorL vs _IteratorR, and yes itโ€™s still constexpr ๐ŸŒˆ
  • template<typename _Tp1 , typename _Tp2 > bool operator== (_Tp1 __lhs, const _Pointer_adapter< _Tp2 > &__rhs) โ€” equality check with a _Pointer_adapter on 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 two normal_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 _Tp and _Poolp accounted 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's constexpr, she's noexcept, and she's gated by a requires clause that literally checks the == actually converts to bool. 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, _IteratorL vs _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_string vs __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_string vs 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_adapter vs _Pointer_adapter, same _Tp:
template<typename _Tp > bool operator== (const _Pointer_adapter< _Tp > &__lhs, const _Pointer_adapter< _Tp > &__rhs)
  • operator==: _Pointer_adapter vs a plain int โ€” yes, an int, that's the vibe:
template<typename _Tp > bool operator== (const _Pointer_adapter< _Tp > &__lhs, int __rhs)
  • operator==: _Pointer_adapter vs literally any _Tp2:
template<typename _Tp1 , typename _Tp2 > bool operator== (const _Pointer_adapter< _Tp1 > &__lhs, _Tp2 __rhs)
  • operator==: _Pointer_adapter vs 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 โ€” __x vs __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== for bitmap_allocator โ€” two different _Tps and she's still throwing a throw () 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== for character โ€” she takes lhs and rhs, 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== for hash_map โ€” __hm1 vs __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== for hash_multimap โ€” same shape, _HF / _EqKey names 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== for hash_multiset โ€” __hs1 and __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== for hash_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== for hashtable โ€” six params deep, __ht1 vs __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== for rope โ€” __left and __right, she's giving directions:
template<class _CharT , class _Alloc > bool operator== (const rope< _CharT, _Alloc > &__left, const rope< _CharT, _Alloc > &__right)
  • operator== for slist โ€” _SL1 vs _SL2, capital letters and all:
template<class _Tp , class _Alloc > bool operator== (const slist< _Tp, _Alloc > &_SL1, const slist< _Tp, _Alloc > &_SL2)
  • operator== for throw_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== for throw_value_base โ€” __a vs __b, short and sweet:
template<typename _Cond > bool operator== (const throw_value_base< _Cond > &__a, const throw_value_base< _Cond > &__b)
  • operator== with int on 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 __lhs by value, no constraints, just vibes:
template<typename _Tp1 , typename _Tp2 > bool operator> (_Tp1 __lhs, const _Pointer_adapter< _Tp2 > &__rhs)
  • operator>: __versa_string vs __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_string vs 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_adapter vs same _Pointer_adapter:
template<typename _Tp > bool operator> (const _Pointer_adapter< _Tp > &__lhs, const _Pointer_adapter< _Tp > &__rhs)
  • operator>: _Pointer_adapter vs a raw _Tp2:
template<typename _Tp1 , typename _Tp2 > bool operator> (const _Pointer_adapter< _Tp1 > &__lhs, _Tp2 __rhs)
  • operator>: _Pointer_adapter vs 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 โ€” __x and __y again, 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> for rope โ€” 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> for slist โ€” _SL1 > _SL2, go off:
template<class _Tp , class _Alloc > bool operator> (const slist< _Tp, _Alloc > &_SL1, const slist< _Tp, _Alloc > &_SL2)

๐Ÿฆ‹ operator>= girlies ๐Ÿฆ‹

  • operator>=: _Tp1 vs _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_string vs __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_string vs 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_adapter vs same _Pointer_adapter:
template<typename _Tp > bool operator>= (const _Pointer_adapter< _Tp > &__lhs, const _Pointer_adapter< _Tp > &__rhs)
  • operator>=: _Pointer_adapter vs raw _Tp2:
template<typename _Tp1 , typename _Tp2 > bool operator>= (const _Pointer_adapter< _Tp1 > &__lhs, _Tp2 __rhs)
  • operator>=: _Pointer_adapter vs 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>= for rope:
template<class _CharT , class _Alloc > bool operator>= (const rope< _CharT, _Alloc > &__x, const rope< _CharT, _Alloc > &__y)
  • operator>= for slist:
template<class _Tp , class _Alloc > bool operator>= (const slist< _Tp, _Alloc > &_SL1, const slist< _Tp, _Alloc > &_SL2)

๐ŸŽ€ operator>> โ€” stream extraction, read her in ๐ŸŽ€

  • operator>> for beta_distribution โ€” reads into __x from __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>> for hypergeometric_distribution โ€” _UIntType this 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>> for normal_mv_distribution โ€” note the _Dimen param is plain size_t here:
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>> for simd_fast_mersenne_twister_engine โ€” the long one, all fifteen engine params spelled out, uint32_t masks 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>> for triangular_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 _Dimen this 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 the get() and element_type part, 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 __lhs followed 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 __lhs followed 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 โ€” true if __lhs precedes __rhs. false otherwise.
  • 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 โ€” true if __lhs precedes __rhs. false otherwise.
  • 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 โ€” true if __lhs precedes __rhs. false otherwise.
  • 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 โ€” true if __lhs doesnโ€™t follow __rhs. false otherwise.
  • 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 โ€” true if __lhs doesnโ€™t follow __rhs. false otherwise.
  • 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 โ€” true if __lhs doesnโ€™t follow __rhs. false otherwise.
  • 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 โ€” 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().

โœจ 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 โ€” 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().

๐Ÿซถ 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 โ€” true if __rhs.compare(__lhs) == 0. false otherwise.

๐ŸŒŸ 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 โ€” true if __lhs follows __rhs. false otherwise.
  • 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 โ€” true if __lhs follows __rhs. false otherwise.
  • 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 โ€” true if __lhs follows __rhs. false otherwise.
  • 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 โ€” true if __lhs doesnโ€™t precede __rhs. false otherwise.
  • 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 โ€” true if __lhs doesnโ€™t precede __rhs. false otherwise.
  • 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 โ€” true if __lhs doesnโ€™t precede __rhs. false otherwise.
  • 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