30#ifndef _GLIBCXX_CHARCONV_H
31#define _GLIBCXX_CHARCONV_H 1
33#pragma GCC system_header
35#if __cplusplus >= 201103L
40namespace std _GLIBCXX_VISIBILITY(default)
42_GLIBCXX_BEGIN_NAMESPACE_VERSION
45#if __cpp_variable_templates
47 template<
typename _Tp>
48 constexpr bool __integer_to_chars_is_unsigned
53 template<
typename _Tp>
54 _GLIBCXX14_CONSTEXPR
unsigned
55 __to_chars_len(_Tp __value,
int __base = 10) noexcept
57#if __cpp_variable_templates
58 static_assert(__integer_to_chars_is_unsigned<_Tp>,
"implementation bug");
63 const unsigned __b3 = __b2 *
__base;
64 const unsigned long __b4 = __b3 *
__base;
67 if (__value < (
unsigned)
__base)
return __n;
68 if (__value < __b2)
return __n + 1;
69 if (__value < __b3)
return __n + 2;
70 if (__value < __b4)
return __n + 3;
79 template<
typename _Tp>
80 _GLIBCXX23_CONSTEXPR
void
81 __to_chars_10_impl(
char* __first,
unsigned __len, _Tp __val)
noexcept
83#if __cpp_variable_templates
84 static_assert(__integer_to_chars_is_unsigned<_Tp>,
"implementation bug");
87 constexpr char __digits[201] =
88 "0001020304050607080910111213141516171819"
89 "2021222324252627282930313233343536373839"
90 "4041424344454647484950515253545556575859"
91 "6061626364656667686970717273747576777879"
92 "8081828384858687888990919293949596979899";
93 unsigned __pos = __len - 1;
96 auto const __num = (__val % 100) * 2;
98 __first[__pos] = __digits[__num + 1];
99 __first[__pos - 1] = __digits[__num];
104 auto const __num = __val * 2;
105 __first[1] = __digits[__num + 1];
106 __first[0] = __digits[__num];
109 __first[0] =
'0' + __val;
113_GLIBCXX_END_NAMESPACE_VERSION
ISO C++ entities toplevel namespace is std.
__numeric_traits_integer< _Tp > __int_traits
Convenience alias for __numeric_traits<integer-type>.
constexpr _Iterator __base(_Iterator __it)