30#ifndef _GLIBCXX_FORMAT_FWD_H
31#define _GLIBCXX_FORMAT_FWD_H 1
34#pragma GCC system_header
38#ifdef __glibcxx_format
42#if __glibcxx_format_ranges
46namespace std _GLIBCXX_VISIBILITY(default)
48_GLIBCXX_BEGIN_NAMESPACE_VERSION
51 template<
typename _Out,
typename _CharT>
class basic_format_context;
54 template<
typename _CharT>
class basic_format_parse_context;
57 template<
typename _Tp,
typename _CharT =
char>
struct formatter;
61#ifdef _GLIBCXX_USE_WCHAR_T
62 template<
typename _CharT>
63 concept __char = same_as<_CharT, char> || same_as<_CharT, wchar_t>;
65 template<
typename _CharT>
66 concept __char = same_as<_CharT, char>;
69 enum class _Align :
unsigned char {
77 template<
typename _CharT>
struct _Spec;
79 template<__
char _CharT>
struct __formatter_str;
80 template<__
char _CharT>
struct __formatter_int;
81 template<__
char _CharT>
struct __formatter_ptr;
83 template<
typename _Tp,
typename _Context,
85 =
typename _Context::template formatter_type<remove_const_t<_Tp>>,
86 typename _ParseContext
87 = basic_format_parse_context<typename _Context::char_type>>
88 concept __parsable_with
89 = semiregular<_Formatter>
90 &&
requires (_Formatter __f, _ParseContext __pc)
92 { __f.parse(__pc) } -> same_as<typename _ParseContext::iterator>;
95 template<
typename _Tp,
typename _Context,
97 =
typename _Context::template formatter_type<remove_const_t<_Tp>>,
98 typename _ParseContext
99 = basic_format_parse_context<typename _Context::char_type>>
100 concept __formattable_with
101 = semiregular<_Formatter>
102 &&
requires (
const _Formatter __cf, _Tp&& __t, _Context __fc)
104 { __cf.format(__t, __fc) } -> same_as<typename _Context::iterator>;
108 template<
typename _CharT>
110 template<
typename _CharT>
111 using _Iter_for_t =
typename _Iter_for<_CharT>::type;
113 template<
typename _Tp,
typename _CharT,
114 typename _Context = basic_format_context<_Iter_for_t<_CharT>, _CharT>>
115 concept __formattable_impl
116 = __parsable_with<_Tp, _Context> && __formattable_with<_Tp, _Context>;
118 template<
typename _Formatter>
119 concept __has_debug_format =
requires(_Formatter __f)
121 __f.set_debug_format();
126#if __glibcxx_format_ranges
128 template<
typename _Tp,
typename _CharT>
130 = __format::__formattable_impl<remove_reference_t<_Tp>, _CharT>;
132 template<
typename _Tp, __format::__
char _CharT =
char>
134 class range_formatter;
139 template<
typename _Rg,
typename _CharT>
140 concept __const_formattable_range
141 = ranges::input_range<const _Rg>
142 && formattable<ranges::range_reference_t<const _Rg>, _CharT>;
146 template<
typename _Rg,
typename _CharT>
147 concept __simply_formattable_range
148 = __const_formattable_range<_Rg, _CharT>
149 && same_as<remove_cvref_t<ranges::range_reference_t<_Rg>>,
150 remove_cvref_t<ranges::range_reference_t<const _Rg>>>;
152 template<
typename _Rg,
typename _CharT>
153 using __maybe_const_range
154 = __conditional_t<__const_formattable_range<_Rg, _CharT>,
const _Rg, _Rg>;
156 template<
typename _Tp,
typename _CharT>
158 = __conditional_t<formattable<const _Tp, _CharT>,
const _Tp, _Tp>;
163 enum class range_format {
181 template<
typename _Rg>
182 constexpr auto format_kind = []{
183 static_assert(
false,
"cannot use primary template of 'std::format_kind'");
184 return type_identity<_Rg>{};
188#if __glibcxx_print >= 202403L
190 constexpr bool enable_nonlocking_formatter_optimization =
false;
193_GLIBCXX_END_NAMESPACE_VERSION
basic_string< char > string
A string of char.
ISO C++ entities toplevel namespace is std.
A standard container made up of (key,value) pairs, which can be retrieved based on a key,...
A standard container made up of unique keys, which can be retrieved in logarithmic time.
[concept.same], concept same_as