35#define _CHAR_TRAITS_H 1
38#pragma GCC system_header
47#ifdef _GLIBCXX_USE_WCHAR_T
51#if __cplusplus >= 201103L
53#if !defined __UINT_LEAST16_TYPE__ || !defined __UINT_LEAST32_TYPE__
57#if __cplusplus >= 202002L
62#ifndef _GLIBCXX_ALWAYS_INLINE
63# define _GLIBCXX_ALWAYS_INLINE inline __attribute__((__always_inline__))
66namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
68_GLIBCXX_BEGIN_NAMESPACE_VERSION
70#pragma GCC diagnostic push
71#pragma GCC diagnostic ignored "-Wstringop-overflow"
72#pragma GCC diagnostic ignored "-Wstringop-overread"
73#pragma GCC diagnostic ignored "-Warray-bounds"
85 template<
typename _CharT>
88 typedef unsigned long int_type;
92 typedef std::mbstate_t state_type;
112 template<
typename _CharT>
115 typedef _CharT char_type;
116 typedef typename _Char_types<_CharT>::int_type int_type;
119 typedef typename _Char_types<_CharT>::off_type off_type;
120 typedef typename _Char_types<_CharT>::state_type state_type;
122#if __cpp_lib_three_way_comparison
123 using comparison_category = std::strong_ordering;
126 static _GLIBCXX14_CONSTEXPR
void
127 assign(char_type& __c1,
const char_type& __c2)
129#if __cpp_constexpr_dynamic_alloc
130 if (std::__is_constant_evaluated())
131 std::construct_at(__builtin_addressof(__c1), __c2);
137 static _GLIBCXX_CONSTEXPR
bool
138 eq(
const char_type& __c1,
const char_type& __c2)
139 {
return __c1 == __c2; }
141 static _GLIBCXX_CONSTEXPR
bool
142 lt(
const char_type& __c1,
const char_type& __c2)
143 {
return __c1 < __c2; }
145 static _GLIBCXX14_CONSTEXPR
int
146 compare(
const char_type* __s1,
const char_type* __s2, std::size_t __n);
148 static _GLIBCXX14_CONSTEXPR std::size_t
149 length(
const char_type* __s);
151 static _GLIBCXX14_CONSTEXPR
const char_type*
152 find(
const char_type* __s, std::size_t __n,
const char_type& __a);
154 static _GLIBCXX20_CONSTEXPR char_type*
155 move(char_type* __s1,
const char_type* __s2, std::size_t __n);
157 static _GLIBCXX20_CONSTEXPR char_type*
158 copy(char_type* __s1,
const char_type* __s2, std::size_t __n);
160 static _GLIBCXX20_CONSTEXPR char_type*
161 assign(char_type* __s, std::size_t __n, char_type __a);
163 static _GLIBCXX_CONSTEXPR char_type
164 to_char_type(
const int_type& __c)
165 {
return static_cast<char_type
>(__c); }
167 static _GLIBCXX_CONSTEXPR int_type
168 to_int_type(
const char_type& __c)
169 {
return static_cast<int_type
>(__c); }
171 static _GLIBCXX_CONSTEXPR
bool
172 eq_int_type(
const int_type& __c1,
const int_type& __c2)
173 {
return __c1 == __c2; }
175#ifdef _GLIBCXX_STDIO_EOF
176 static _GLIBCXX_CONSTEXPR int_type
178 {
return static_cast<int_type
>(_GLIBCXX_STDIO_EOF); }
180 static _GLIBCXX_CONSTEXPR int_type
181 not_eof(
const int_type& __c)
182 {
return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); }
186 template<
typename _CharT>
187 _GLIBCXX14_CONSTEXPR
int
189 compare(
const char_type* __s1,
const char_type* __s2, std::size_t __n)
191 for (std::size_t __i = 0; __i < __n; ++__i)
192 if (lt(__s1[__i], __s2[__i]))
194 else if (lt(__s2[__i], __s1[__i]))
199 template<
typename _CharT>
200 _GLIBCXX14_CONSTEXPR std::size_t
201 char_traits<_CharT>::
202 length(
const char_type* __p)
205 while (!eq(__p[__i], char_type()))
210 template<
typename _CharT>
211 _GLIBCXX14_CONSTEXPR
const typename char_traits<_CharT>::char_type*
212 char_traits<_CharT>::
213 find(
const char_type* __s, std::size_t __n,
const char_type& __a)
215 for (std::size_t __i = 0; __i < __n; ++__i)
216 if (eq(__s[__i], __a))
221 template<
typename _CharT>
223 typename char_traits<_CharT>::char_type*
224 char_traits<_CharT>::
225 move(char_type* __s1,
const char_type* __s2, std::size_t __n)
229#if __cplusplus >= 202002L
230 if (std::__is_constant_evaluated())
233 if (__builtin_constant_p(__s2 < __s1)
234 && __s1 > __s2 && __s1 < (__s2 + __n))
239 assign(__s1[__n], __s2[__n]);
244 copy(__s1, __s2, __n);
248 __builtin_memmove(__s1, __s2, __n *
sizeof(char_type));
252 template<
typename _CharT>
254 typename char_traits<_CharT>::char_type*
255 char_traits<_CharT>::
256 copy(char_type* __s1,
const char_type* __s2, std::size_t __n)
260#if __cplusplus >= 202002L
261 if (std::__is_constant_evaluated())
263 for (std::size_t __i = 0; __i < __n; ++__i)
264 std::construct_at(__s1 + __i, __s2[__i]);
268 __builtin_memcpy(__s1, __s2, __n *
sizeof(char_type));
272 template<
typename _CharT>
274 typename char_traits<_CharT>::char_type*
275 char_traits<_CharT>::
276 assign(char_type* __s, std::size_t __n, char_type __a)
278#if __cplusplus >= 202002L
279 if (std::__is_constant_evaluated())
281 for (std::size_t __i = 0; __i < __n; ++__i)
282 std::construct_at(__s + __i, __a);
287 if _GLIBCXX17_CONSTEXPR (
sizeof(_CharT) == 1 && __is_trivial(_CharT))
292 __builtin_memcpy(&__c, __builtin_addressof(__a), 1);
293 __builtin_memset(__s, __c, __n);
298 for (std::size_t __i = 0; __i < __n; ++__i)
304_GLIBCXX_END_NAMESPACE_VERSION
307namespace std _GLIBCXX_VISIBILITY(default)
309_GLIBCXX_BEGIN_NAMESPACE_VERSION
324 template<
typename _CharT>
333 typedef char char_type;
334 typedef int int_type;
338 typedef mbstate_t state_type;
340#if __cpp_lib_three_way_comparison
341 using comparison_category = strong_ordering;
344 static _GLIBCXX17_CONSTEXPR
void
345 assign(char_type& __c1,
const char_type& __c2) _GLIBCXX_NOEXCEPT
347#if __cpp_constexpr_dynamic_alloc
348 if (std::__is_constant_evaluated())
349 std::construct_at(__builtin_addressof(__c1), __c2);
355 static _GLIBCXX_CONSTEXPR
bool
356 eq(
const char_type& __c1,
const char_type& __c2) _GLIBCXX_NOEXCEPT
357 {
return __c1 == __c2; }
359 static _GLIBCXX_CONSTEXPR
bool
360 lt(
const char_type& __c1,
const char_type& __c2) _GLIBCXX_NOEXCEPT
363 return (
static_cast<unsigned char>(__c1)
364 <
static_cast<unsigned char>(__c2));
367 static _GLIBCXX17_CONSTEXPR
int
368 compare(
const char_type* __s1,
const char_type* __s2,
size_t __n)
372#if __cplusplus >= 201703L
373 if (std::__is_constant_evaluated())
375 for (
size_t __i = 0; __i < __n; ++__i)
376 if (lt(__s1[__i], __s2[__i]))
378 else if (lt(__s2[__i], __s1[__i]))
383 return __builtin_memcmp(__s1, __s2, __n);
386 static _GLIBCXX17_CONSTEXPR
size_t
387 length(
const char_type* __s)
389#if __cplusplus >= 201703L
390 if (std::__is_constant_evaluated())
393 return __builtin_strlen(__s);
396 static _GLIBCXX17_CONSTEXPR
const char_type*
397 find(
const char_type* __s,
size_t __n,
const char_type& __a)
401#if __cplusplus >= 201703L
402 if (std::__is_constant_evaluated())
405 return static_cast<const char_type*
>(__builtin_memchr(__s, __a, __n));
408 static _GLIBCXX20_CONSTEXPR char_type*
409 move(char_type* __s1,
const char_type* __s2,
size_t __n)
413#if __cplusplus >= 202002L
414 if (std::__is_constant_evaluated())
417 return static_cast<char_type*
>(__builtin_memmove(__s1, __s2, __n));
420 static _GLIBCXX20_CONSTEXPR char_type*
421 copy(char_type* __s1,
const char_type* __s2,
size_t __n)
425#if __cplusplus >= 202002L
426 if (std::__is_constant_evaluated())
429 return static_cast<char_type*
>(__builtin_memcpy(__s1, __s2, __n));
432 static _GLIBCXX20_CONSTEXPR char_type*
433 assign(char_type* __s,
size_t __n, char_type __a)
437#if __cplusplus >= 202002L
438 if (std::__is_constant_evaluated())
441 return static_cast<char_type*
>(__builtin_memset(__s, __a, __n));
444 static _GLIBCXX_CONSTEXPR char_type
445 to_char_type(
const int_type& __c) _GLIBCXX_NOEXCEPT
446 {
return static_cast<char_type
>(__c); }
450 static _GLIBCXX_CONSTEXPR int_type
451 to_int_type(
const char_type& __c) _GLIBCXX_NOEXCEPT
452 {
return static_cast<int_type
>(
static_cast<unsigned char>(__c)); }
454 static _GLIBCXX_CONSTEXPR
bool
455 eq_int_type(
const int_type& __c1,
const int_type& __c2) _GLIBCXX_NOEXCEPT
456 {
return __c1 == __c2; }
458#ifdef _GLIBCXX_STDIO_EOF
459 static _GLIBCXX_CONSTEXPR int_type
460 eof() _GLIBCXX_NOEXCEPT
461 {
return static_cast<int_type
>(_GLIBCXX_STDIO_EOF); }
463 static _GLIBCXX_CONSTEXPR int_type
464 not_eof(
const int_type& __c) _GLIBCXX_NOEXCEPT
465 {
return (__c == eof()) ? 0 : __c; }
470#ifdef _GLIBCXX_USE_WCHAR_T
475 typedef wchar_t char_type;
476 typedef wint_t int_type;
480 typedef mbstate_t state_type;
482#if __cpp_lib_three_way_comparison
483 using comparison_category = strong_ordering;
486 static _GLIBCXX17_CONSTEXPR
void
487 assign(char_type& __c1,
const char_type& __c2) _GLIBCXX_NOEXCEPT
489#if __cpp_constexpr_dynamic_alloc
490 if (std::__is_constant_evaluated())
491 std::construct_at(__builtin_addressof(__c1), __c2);
497 static _GLIBCXX_CONSTEXPR
bool
498 eq(
const char_type& __c1,
const char_type& __c2) _GLIBCXX_NOEXCEPT
499 {
return __c1 == __c2; }
501 static _GLIBCXX_CONSTEXPR
bool
502 lt(
const char_type& __c1,
const char_type& __c2) _GLIBCXX_NOEXCEPT
503 {
return __c1 < __c2; }
505 static _GLIBCXX17_CONSTEXPR
int
506 compare(
const char_type* __s1,
const char_type* __s2,
size_t __n)
510#if __cplusplus >= 201703L
511 if (std::__is_constant_evaluated())
514 return wmemcmp(__s1, __s2, __n);
517 static _GLIBCXX17_CONSTEXPR
size_t
518 length(
const char_type* __s)
520#if __cplusplus >= 201703L
521 if (std::__is_constant_evaluated())
527 static _GLIBCXX17_CONSTEXPR
const char_type*
528 find(
const char_type* __s,
size_t __n,
const char_type& __a)
532#if __cplusplus >= 201703L
533 if (std::__is_constant_evaluated())
536 return wmemchr(__s, __a, __n);
539 static _GLIBCXX20_CONSTEXPR char_type*
540 move(char_type* __s1,
const char_type* __s2,
size_t __n)
544#if __cplusplus >= 202002L
545 if (std::__is_constant_evaluated())
548 return wmemmove(__s1, __s2, __n);
551 static _GLIBCXX20_CONSTEXPR char_type*
552 copy(char_type* __s1,
const char_type* __s2,
size_t __n)
556#if __cplusplus >= 202002L
557 if (std::__is_constant_evaluated())
560 return wmemcpy(__s1, __s2, __n);
563 static _GLIBCXX20_CONSTEXPR char_type*
564 assign(char_type* __s,
size_t __n, char_type __a)
568#if __cplusplus >= 202002L
569 if (std::__is_constant_evaluated())
572 return wmemset(__s, __a, __n);
575 static _GLIBCXX_CONSTEXPR char_type
576 to_char_type(
const int_type& __c) _GLIBCXX_NOEXCEPT
577 {
return char_type(__c); }
579 static _GLIBCXX_CONSTEXPR int_type
580 to_int_type(
const char_type& __c) _GLIBCXX_NOEXCEPT
581 {
return int_type(__c); }
583 static _GLIBCXX_CONSTEXPR
bool
584 eq_int_type(
const int_type& __c1,
const int_type& __c2) _GLIBCXX_NOEXCEPT
585 {
return __c1 == __c2; }
588 static _GLIBCXX_CONSTEXPR int_type
589 eof() _GLIBCXX_NOEXCEPT
590 {
return static_cast<int_type
>(WEOF); }
592 static _GLIBCXX_CONSTEXPR int_type
593 not_eof(
const int_type& __c) _GLIBCXX_NOEXCEPT
594 {
return eq_int_type(__c, eof()) ? 0 : __c; }
603#ifdef _GLIBCXX_USE_CHAR8_T
605 struct char_traits<char8_t>
607 typedef char8_t char_type;
608 typedef unsigned int int_type;
610 typedef u8streampos pos_type;
612 typedef mbstate_t state_type;
614#if __cpp_lib_three_way_comparison
615 using comparison_category = strong_ordering;
618 static _GLIBCXX17_CONSTEXPR
void
619 assign(char_type& __c1,
const char_type& __c2) _GLIBCXX_NOEXCEPT
621#if __cpp_constexpr_dynamic_alloc
622 if (std::__is_constant_evaluated())
623 std::construct_at(__builtin_addressof(__c1), __c2);
629 static _GLIBCXX_CONSTEXPR
bool
630 eq(
const char_type& __c1,
const char_type& __c2) _GLIBCXX_NOEXCEPT
631 {
return __c1 == __c2; }
633 static _GLIBCXX_CONSTEXPR
bool
634 lt(
const char_type& __c1,
const char_type& __c2) _GLIBCXX_NOEXCEPT
635 {
return __c1 < __c2; }
637 static _GLIBCXX17_CONSTEXPR
int
638 compare(
const char_type* __s1,
const char_type* __s2,
size_t __n)
642#if __cplusplus >= 201703L
643 if (std::__is_constant_evaluated())
646 return __builtin_memcmp(__s1, __s2, __n);
649 static _GLIBCXX17_CONSTEXPR
size_t
650 length(
const char_type* __s)
652#if __cplusplus >= 201703L
653 if (std::__is_constant_evaluated())
656 return __builtin_strlen((
const char*)__s);
659 static _GLIBCXX17_CONSTEXPR
const char_type*
660 find(
const char_type* __s,
size_t __n,
const char_type& __a)
664#if __cplusplus >= 201703L
665 if (std::__is_constant_evaluated())
668 return static_cast<const char_type*
>(__builtin_memchr(__s, __a, __n));
671 static _GLIBCXX20_CONSTEXPR char_type*
672 move(char_type* __s1,
const char_type* __s2,
size_t __n)
676#if __cplusplus >= 202002L
677 if (std::__is_constant_evaluated())
680 return static_cast<char_type*
>(__builtin_memmove(__s1, __s2, __n));
683 static _GLIBCXX20_CONSTEXPR char_type*
684 copy(char_type* __s1,
const char_type* __s2,
size_t __n)
688#if __cplusplus >= 202002L
689 if (std::__is_constant_evaluated())
692 return static_cast<char_type*
>(__builtin_memcpy(__s1, __s2, __n));
695 static _GLIBCXX20_CONSTEXPR char_type*
696 assign(char_type* __s,
size_t __n, char_type __a)
700#if __cplusplus >= 202002L
701 if (std::__is_constant_evaluated())
704 return static_cast<char_type*
>(__builtin_memset(__s, __a, __n));
707 static _GLIBCXX_CONSTEXPR char_type
708 to_char_type(
const int_type& __c) _GLIBCXX_NOEXCEPT
709 {
return char_type(__c); }
711 static _GLIBCXX_CONSTEXPR int_type
712 to_int_type(
const char_type& __c) _GLIBCXX_NOEXCEPT
713 {
return int_type(__c); }
715 static _GLIBCXX_CONSTEXPR
bool
716 eq_int_type(
const int_type& __c1,
const int_type& __c2) _GLIBCXX_NOEXCEPT
717 {
return __c1 == __c2; }
720 static _GLIBCXX_CONSTEXPR int_type
721 eof() _GLIBCXX_NOEXCEPT
722 {
return static_cast<int_type
>(-1); }
724 static _GLIBCXX_CONSTEXPR int_type
725 not_eof(
const int_type& __c) _GLIBCXX_NOEXCEPT
726 {
return eq_int_type(__c, eof()) ? 0 : __c; }
731_GLIBCXX_END_NAMESPACE_VERSION
734#if __cplusplus >= 201103L
736namespace std _GLIBCXX_VISIBILITY(default)
738_GLIBCXX_BEGIN_NAMESPACE_VERSION
741 struct char_traits<char16_t>
743 typedef char16_t char_type;
744#ifdef __UINT_LEAST16_TYPE__
745 typedef __UINT_LEAST16_TYPE__ int_type;
747 typedef uint_least16_t int_type;
752 typedef mbstate_t state_type;
754#if __cpp_lib_three_way_comparison
755 using comparison_category = strong_ordering;
758 static _GLIBCXX17_CONSTEXPR
void
759 assign(char_type& __c1,
const char_type& __c2)
noexcept
761#if __cpp_constexpr_dynamic_alloc
762 if (std::__is_constant_evaluated())
763 std::construct_at(__builtin_addressof(__c1), __c2);
769 static constexpr bool
770 eq(
const char_type& __c1,
const char_type& __c2)
noexcept
771 {
return __c1 == __c2; }
773 static constexpr bool
774 lt(
const char_type& __c1,
const char_type& __c2)
noexcept
775 {
return __c1 < __c2; }
777 static _GLIBCXX17_CONSTEXPR
int
778 compare(
const char_type* __s1,
const char_type* __s2,
size_t __n)
780 for (
size_t __i = 0; __i < __n; ++__i)
781 if (lt(__s1[__i], __s2[__i]))
783 else if (lt(__s2[__i], __s1[__i]))
788 static _GLIBCXX17_CONSTEXPR
size_t
789 length(
const char_type* __s)
792 while (!eq(__s[__i], char_type()))
797 static _GLIBCXX17_CONSTEXPR
const char_type*
798 find(
const char_type* __s,
size_t __n,
const char_type& __a)
800 for (
size_t __i = 0; __i < __n; ++__i)
801 if (eq(__s[__i], __a))
806 static _GLIBCXX20_CONSTEXPR char_type*
807 move(char_type* __s1,
const char_type* __s2,
size_t __n)
811#if __cplusplus >= 202002L
812 if (std::__is_constant_evaluated())
815 return (
static_cast<char_type*
>
816 (__builtin_memmove(__s1, __s2, __n *
sizeof(char_type))));
819 static _GLIBCXX20_CONSTEXPR char_type*
820 copy(char_type* __s1,
const char_type* __s2,
size_t __n)
824#if __cplusplus >= 202002L
825 if (std::__is_constant_evaluated())
828 return (
static_cast<char_type*
>
829 (__builtin_memcpy(__s1, __s2, __n *
sizeof(char_type))));
832 static _GLIBCXX20_CONSTEXPR char_type*
833 assign(char_type* __s,
size_t __n, char_type __a)
835 for (
size_t __i = 0; __i < __n; ++__i)
836 assign(__s[__i], __a);
840 static constexpr char_type
841 to_char_type(
const int_type& __c)
noexcept
842 {
return char_type(__c); }
844 static constexpr bool
845 eq_int_type(
const int_type& __c1,
const int_type& __c2)
noexcept
846 {
return __c1 == __c2; }
849 static constexpr int_type
850 to_int_type(
const char_type& __c)
noexcept
851 {
return __c == eof() ? int_type(0xfffd) : int_type(__c); }
853 static constexpr int_type
855 {
return static_cast<int_type
>(-1); }
857 static constexpr int_type
858 not_eof(
const int_type& __c)
noexcept
859 {
return eq_int_type(__c, eof()) ? 0 : __c; }
861 static constexpr int_type
862 to_int_type(
const char_type& __c)
noexcept
863 {
return int_type(__c); }
868 struct char_traits<char32_t>
870 typedef char32_t char_type;
871#ifdef __UINT_LEAST32_TYPE__
872 typedef __UINT_LEAST32_TYPE__ int_type;
874 typedef uint_least32_t int_type;
879 typedef mbstate_t state_type;
881#if __cpp_lib_three_way_comparison
882 using comparison_category = strong_ordering;
885 static _GLIBCXX17_CONSTEXPR
void
886 assign(char_type& __c1,
const char_type& __c2)
noexcept
888#if __cpp_constexpr_dynamic_alloc
889 if (std::__is_constant_evaluated())
890 std::construct_at(__builtin_addressof(__c1), __c2);
896 static constexpr bool
897 eq(
const char_type& __c1,
const char_type& __c2)
noexcept
898 {
return __c1 == __c2; }
900 static constexpr bool
901 lt(
const char_type& __c1,
const char_type& __c2)
noexcept
902 {
return __c1 < __c2; }
904 static _GLIBCXX17_CONSTEXPR
int
905 compare(
const char_type* __s1,
const char_type* __s2,
size_t __n)
907 for (
size_t __i = 0; __i < __n; ++__i)
908 if (lt(__s1[__i], __s2[__i]))
910 else if (lt(__s2[__i], __s1[__i]))
915 static _GLIBCXX17_CONSTEXPR
size_t
916 length(
const char_type* __s)
919 while (!eq(__s[__i], char_type()))
924 static _GLIBCXX17_CONSTEXPR
const char_type*
925 find(
const char_type* __s,
size_t __n,
const char_type& __a)
927 for (
size_t __i = 0; __i < __n; ++__i)
928 if (eq(__s[__i], __a))
933 static _GLIBCXX20_CONSTEXPR char_type*
934 move(char_type* __s1,
const char_type* __s2,
size_t __n)
938#if __cplusplus >= 202002L
939 if (std::__is_constant_evaluated())
942 return (
static_cast<char_type*
>
943 (__builtin_memmove(__s1, __s2, __n *
sizeof(char_type))));
946 static _GLIBCXX20_CONSTEXPR char_type*
947 copy(char_type* __s1,
const char_type* __s2,
size_t __n)
951#if __cplusplus >= 202002L
952 if (std::__is_constant_evaluated())
955 return (
static_cast<char_type*
>
956 (__builtin_memcpy(__s1, __s2, __n *
sizeof(char_type))));
959 static _GLIBCXX20_CONSTEXPR char_type*
960 assign(char_type* __s,
size_t __n, char_type __a)
962 for (
size_t __i = 0; __i < __n; ++__i)
963 assign(__s[__i], __a);
967 static constexpr char_type
968 to_char_type(
const int_type& __c)
noexcept
969 {
return char_type(__c); }
971 static constexpr int_type
972 to_int_type(
const char_type& __c)
noexcept
973 {
return int_type(__c); }
975 static constexpr bool
976 eq_int_type(
const int_type& __c1,
const int_type& __c2)
noexcept
977 {
return __c1 == __c2; }
980 static constexpr int_type
982 {
return static_cast<int_type
>(-1); }
984 static constexpr int_type
985 not_eof(
const int_type& __c)
noexcept
986 {
return eq_int_type(__c, eof()) ? 0 : __c; }
990#if __cpp_lib_three_way_comparison
993 template<
typename _ChTraits>
995 __char_traits_cmp_cat(
int __cmp)
noexcept
997 if constexpr (
requires {
typename _ChTraits::comparison_category; })
999 using _Cat =
typename _ChTraits::comparison_category;
1000 static_assert( !is_void_v<common_comparison_category_t<_Cat>> );
1001 return static_cast<_Cat
>(__cmp <=> 0);
1004 return static_cast<weak_ordering
>(__cmp <=> 0);
1009#pragma GCC diagnostic pop
1011_GLIBCXX_END_NAMESPACE_VERSION
ISO C++ entities toplevel namespace is std.
fpos< mbstate_t > u32streampos
File position for char32_t streams.
long long streamoff
Type used by fpos, char_traits<char>, and char_traits<wchar_t>.
fpos< mbstate_t > u16streampos
File position for char16_t streams.
GNU extensions for public use.
Mapping from character type to associated types.
Base class used to implement std::char_traits.
Basis for explicit traits specializations.
Class representing stream positions.