2 //===----------------------------------------------------------------------===//
4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 // See https://llvm.org/LICENSE.txt for license information.
6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
8 //===----------------------------------------------------------------------===//
10 #ifndef _LIBCPP_CODECVT
11 #define _LIBCPP_CODECVT
26 template <class Elem, unsigned long Maxcode = 0x10ffff,
27 codecvt_mode Mode = (codecvt_mode)0>
29 : public codecvt<Elem, char, mbstate_t>
31 explicit codecvt_utf8(size_t refs = 0);
35 template <class Elem, unsigned long Maxcode = 0x10ffff,
36 codecvt_mode Mode = (codecvt_mode)0>
38 : public codecvt<Elem, char, mbstate_t>
40 explicit codecvt_utf16(size_t refs = 0);
44 template <class Elem, unsigned long Maxcode = 0x10ffff,
45 codecvt_mode Mode = (codecvt_mode)0>
46 class codecvt_utf8_utf16
47 : public codecvt<Elem, char, mbstate_t>
49 explicit codecvt_utf8_utf16(size_t refs = 0);
50 ~codecvt_utf8_utf16();
57 #if __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)
58 # include <__cxx03/codecvt>
64 # if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
65 # pragma GCC system_header
68 # if _LIBCPP_STD_VER < 26 || defined(_LIBCPP_BUILDING_LIBRARY) || defined(_LIBCPP_ENABLE_CXX26_REMOVED_CODECVT)
70 _LIBCPP_BEGIN_NAMESPACE_STD
72 enum _LIBCPP_DEPRECATED_IN_CXX17 codecvt_mode { consume_header = 4, generate_header = 2, little_endian = 1 };
76 template <class _Elem>
79 # if _LIBCPP_HAS_WIDE_CHARACTERS
81 class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8<wchar_t> : public codecvt<wchar_t, char, mbstate_t> {
82 unsigned long __maxcode_;
83 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
85 _LIBCPP_SUPPRESS_DEPRECATED_POP
88 typedef wchar_t intern_type;
89 typedef char extern_type;
90 typedef mbstate_t state_type;
92 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
93 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf8(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)
94 : codecvt<wchar_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}
95 _LIBCPP_SUPPRESS_DEPRECATED_POP
98 result do_out(state_type& __st,
99 const intern_type* __frm,
100 const intern_type* __frm_end,
101 const intern_type*& __frm_nxt,
103 extern_type* __to_end,
104 extern_type*& __to_nxt) const override;
105 result do_in(state_type& __st,
106 const extern_type* __frm,
107 const extern_type* __frm_end,
108 const extern_type*& __frm_nxt,
110 intern_type* __to_end,
111 intern_type*& __to_nxt) const override;
112 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;
113 int do_encoding() const _NOEXCEPT override;
114 bool do_always_noconv() const _NOEXCEPT override;
115 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;
116 int do_max_length() const _NOEXCEPT override;
118 # endif // _LIBCPP_HAS_WIDE_CHARACTERS
120 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
122 class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8<char16_t> : public codecvt<char16_t, char, mbstate_t> {
123 unsigned long __maxcode_;
124 codecvt_mode __mode_;
127 typedef char16_t intern_type;
128 typedef char extern_type;
129 typedef mbstate_t state_type;
131 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf8(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)
132 : codecvt<char16_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}
133 _LIBCPP_SUPPRESS_DEPRECATED_POP
136 result do_out(state_type& __st,
137 const intern_type* __frm,
138 const intern_type* __frm_end,
139 const intern_type*& __frm_nxt,
141 extern_type* __to_end,
142 extern_type*& __to_nxt) const override;
143 result do_in(state_type& __st,
144 const extern_type* __frm,
145 const extern_type* __frm_end,
146 const extern_type*& __frm_nxt,
148 intern_type* __to_end,
149 intern_type*& __to_nxt) const override;
150 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;
151 int do_encoding() const _NOEXCEPT override;
152 bool do_always_noconv() const _NOEXCEPT override;
153 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;
154 int do_max_length() const _NOEXCEPT override;
157 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
159 class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8<char32_t> : public codecvt<char32_t, char, mbstate_t> {
160 unsigned long __maxcode_;
161 codecvt_mode __mode_;
164 typedef char32_t intern_type;
165 typedef char extern_type;
166 typedef mbstate_t state_type;
168 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf8(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)
169 : codecvt<char32_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}
170 _LIBCPP_SUPPRESS_DEPRECATED_POP
173 result do_out(state_type& __st,
174 const intern_type* __frm,
175 const intern_type* __frm_end,
176 const intern_type*& __frm_nxt,
178 extern_type* __to_end,
179 extern_type*& __to_nxt) const override;
180 result do_in(state_type& __st,
181 const extern_type* __frm,
182 const extern_type* __frm_end,
183 const extern_type*& __frm_nxt,
185 intern_type* __to_end,
186 intern_type*& __to_nxt) const override;
187 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;
188 int do_encoding() const _NOEXCEPT override;
189 bool do_always_noconv() const _NOEXCEPT override;
190 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;
191 int do_max_length() const _NOEXCEPT override;
194 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
195 template <class _Elem, unsigned long _Maxcode = 0x10ffff, codecvt_mode _Mode = (codecvt_mode)0>
196 class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 codecvt_utf8 : public __codecvt_utf8<_Elem> {
198 _LIBCPP_HIDE_FROM_ABI explicit codecvt_utf8(size_t __refs = 0) : __codecvt_utf8<_Elem>(__refs, _Maxcode, _Mode) {}
200 _LIBCPP_HIDE_FROM_ABI ~codecvt_utf8() {}
202 _LIBCPP_SUPPRESS_DEPRECATED_POP
206 template <class _Elem, bool _LittleEndian>
207 class __codecvt_utf16;
209 # if _LIBCPP_HAS_WIDE_CHARACTERS
211 class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16<wchar_t, false> : public codecvt<wchar_t, char, mbstate_t> {
212 unsigned long __maxcode_;
213 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
214 codecvt_mode __mode_;
215 _LIBCPP_SUPPRESS_DEPRECATED_POP
218 typedef wchar_t intern_type;
219 typedef char extern_type;
220 typedef mbstate_t state_type;
222 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
223 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)
224 : codecvt<wchar_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}
225 _LIBCPP_SUPPRESS_DEPRECATED_POP
228 result do_out(state_type& __st,
229 const intern_type* __frm,
230 const intern_type* __frm_end,
231 const intern_type*& __frm_nxt,
233 extern_type* __to_end,
234 extern_type*& __to_nxt) const override;
235 result do_in(state_type& __st,
236 const extern_type* __frm,
237 const extern_type* __frm_end,
238 const extern_type*& __frm_nxt,
240 intern_type* __to_end,
241 intern_type*& __to_nxt) const override;
242 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;
243 int do_encoding() const _NOEXCEPT override;
244 bool do_always_noconv() const _NOEXCEPT override;
245 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;
246 int do_max_length() const _NOEXCEPT override;
250 class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16<wchar_t, true> : public codecvt<wchar_t, char, mbstate_t> {
251 unsigned long __maxcode_;
252 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
253 codecvt_mode __mode_;
254 _LIBCPP_SUPPRESS_DEPRECATED_POP
257 typedef wchar_t intern_type;
258 typedef char extern_type;
259 typedef mbstate_t state_type;
261 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
262 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)
263 : codecvt<wchar_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}
264 _LIBCPP_SUPPRESS_DEPRECATED_POP
267 result do_out(state_type& __st,
268 const intern_type* __frm,
269 const intern_type* __frm_end,
270 const intern_type*& __frm_nxt,
272 extern_type* __to_end,
273 extern_type*& __to_nxt) const override;
274 result do_in(state_type& __st,
275 const extern_type* __frm,
276 const extern_type* __frm_end,
277 const extern_type*& __frm_nxt,
279 intern_type* __to_end,
280 intern_type*& __to_nxt) const override;
281 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;
282 int do_encoding() const _NOEXCEPT override;
283 bool do_always_noconv() const _NOEXCEPT override;
284 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;
285 int do_max_length() const _NOEXCEPT override;
287 # endif // _LIBCPP_HAS_WIDE_CHARACTERS
289 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
291 class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16<char16_t, false> : public codecvt<char16_t, char, mbstate_t> {
292 unsigned long __maxcode_;
293 codecvt_mode __mode_;
296 typedef char16_t intern_type;
297 typedef char extern_type;
298 typedef mbstate_t state_type;
300 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)
301 : codecvt<char16_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}
302 _LIBCPP_SUPPRESS_DEPRECATED_POP
305 result do_out(state_type& __st,
306 const intern_type* __frm,
307 const intern_type* __frm_end,
308 const intern_type*& __frm_nxt,
310 extern_type* __to_end,
311 extern_type*& __to_nxt) const override;
312 result do_in(state_type& __st,
313 const extern_type* __frm,
314 const extern_type* __frm_end,
315 const extern_type*& __frm_nxt,
317 intern_type* __to_end,
318 intern_type*& __to_nxt) const override;
319 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;
320 int do_encoding() const _NOEXCEPT override;
321 bool do_always_noconv() const _NOEXCEPT override;
322 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;
323 int do_max_length() const _NOEXCEPT override;
326 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
328 class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16<char16_t, true> : public codecvt<char16_t, char, mbstate_t> {
329 unsigned long __maxcode_;
330 codecvt_mode __mode_;
333 typedef char16_t intern_type;
334 typedef char extern_type;
335 typedef mbstate_t state_type;
337 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)
338 : codecvt<char16_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}
339 _LIBCPP_SUPPRESS_DEPRECATED_POP
342 result do_out(state_type& __st,
343 const intern_type* __frm,
344 const intern_type* __frm_end,
345 const intern_type*& __frm_nxt,
347 extern_type* __to_end,
348 extern_type*& __to_nxt) const override;
349 result do_in(state_type& __st,
350 const extern_type* __frm,
351 const extern_type* __frm_end,
352 const extern_type*& __frm_nxt,
354 intern_type* __to_end,
355 intern_type*& __to_nxt) const override;
356 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;
357 int do_encoding() const _NOEXCEPT override;
358 bool do_always_noconv() const _NOEXCEPT override;
359 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;
360 int do_max_length() const _NOEXCEPT override;
363 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
365 class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16<char32_t, false> : public codecvt<char32_t, char, mbstate_t> {
366 unsigned long __maxcode_;
367 codecvt_mode __mode_;
370 typedef char32_t intern_type;
371 typedef char extern_type;
372 typedef mbstate_t state_type;
374 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)
375 : codecvt<char32_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}
376 _LIBCPP_SUPPRESS_DEPRECATED_POP
379 result do_out(state_type& __st,
380 const intern_type* __frm,
381 const intern_type* __frm_end,
382 const intern_type*& __frm_nxt,
384 extern_type* __to_end,
385 extern_type*& __to_nxt) const override;
386 result do_in(state_type& __st,
387 const extern_type* __frm,
388 const extern_type* __frm_end,
389 const extern_type*& __frm_nxt,
391 intern_type* __to_end,
392 intern_type*& __to_nxt) const override;
393 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;
394 int do_encoding() const _NOEXCEPT override;
395 bool do_always_noconv() const _NOEXCEPT override;
396 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;
397 int do_max_length() const _NOEXCEPT override;
400 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
402 class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16<char32_t, true> : public codecvt<char32_t, char, mbstate_t> {
403 unsigned long __maxcode_;
404 codecvt_mode __mode_;
407 typedef char32_t intern_type;
408 typedef char extern_type;
409 typedef mbstate_t state_type;
411 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)
412 : codecvt<char32_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}
413 _LIBCPP_SUPPRESS_DEPRECATED_POP
416 result do_out(state_type& __st,
417 const intern_type* __frm,
418 const intern_type* __frm_end,
419 const intern_type*& __frm_nxt,
421 extern_type* __to_end,
422 extern_type*& __to_nxt) const override;
423 result do_in(state_type& __st,
424 const extern_type* __frm,
425 const extern_type* __frm_end,
426 const extern_type*& __frm_nxt,
428 intern_type* __to_end,
429 intern_type*& __to_nxt) const override;
430 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;
431 int do_encoding() const _NOEXCEPT override;
432 bool do_always_noconv() const _NOEXCEPT override;
433 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;
434 int do_max_length() const _NOEXCEPT override;
437 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
438 template <class _Elem, unsigned long _Maxcode = 0x10ffff, codecvt_mode _Mode = (codecvt_mode)0>
439 class _LIBCPP_TEMPLATE_VIS
440 _LIBCPP_DEPRECATED_IN_CXX17 codecvt_utf16 : public __codecvt_utf16<_Elem, _Mode & little_endian> {
442 _LIBCPP_HIDE_FROM_ABI explicit codecvt_utf16(size_t __refs = 0)
443 : __codecvt_utf16<_Elem, _Mode & little_endian>(__refs, _Maxcode, _Mode) {}
445 _LIBCPP_HIDE_FROM_ABI ~codecvt_utf16() {}
447 _LIBCPP_SUPPRESS_DEPRECATED_POP
449 // codecvt_utf8_utf16
451 template <class _Elem>
452 class __codecvt_utf8_utf16;
454 # if _LIBCPP_HAS_WIDE_CHARACTERS
456 class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8_utf16<wchar_t> : public codecvt<wchar_t, char, mbstate_t> {
457 unsigned long __maxcode_;
458 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
459 codecvt_mode __mode_;
460 _LIBCPP_SUPPRESS_DEPRECATED_POP
463 typedef wchar_t intern_type;
464 typedef char extern_type;
465 typedef mbstate_t state_type;
467 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
468 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf8_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)
469 : codecvt<wchar_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}
470 _LIBCPP_SUPPRESS_DEPRECATED_POP
473 result do_out(state_type& __st,
474 const intern_type* __frm,
475 const intern_type* __frm_end,
476 const intern_type*& __frm_nxt,
478 extern_type* __to_end,
479 extern_type*& __to_nxt) const override;
480 result do_in(state_type& __st,
481 const extern_type* __frm,
482 const extern_type* __frm_end,
483 const extern_type*& __frm_nxt,
485 intern_type* __to_end,
486 intern_type*& __to_nxt) const override;
487 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;
488 int do_encoding() const _NOEXCEPT override;
489 bool do_always_noconv() const _NOEXCEPT override;
490 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;
491 int do_max_length() const _NOEXCEPT override;
493 # endif // _LIBCPP_HAS_WIDE_CHARACTERS
495 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
497 class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8_utf16<char32_t> : public codecvt<char32_t, char, mbstate_t> {
498 unsigned long __maxcode_;
499 codecvt_mode __mode_;
502 typedef char32_t intern_type;
503 typedef char extern_type;
504 typedef mbstate_t state_type;
506 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf8_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)
507 : codecvt<char32_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}
508 _LIBCPP_SUPPRESS_DEPRECATED_POP
511 result do_out(state_type& __st,
512 const intern_type* __frm,
513 const intern_type* __frm_end,
514 const intern_type*& __frm_nxt,
516 extern_type* __to_end,
517 extern_type*& __to_nxt) const override;
518 result do_in(state_type& __st,
519 const extern_type* __frm,
520 const extern_type* __frm_end,
521 const extern_type*& __frm_nxt,
523 intern_type* __to_end,
524 intern_type*& __to_nxt) const override;
525 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;
526 int do_encoding() const _NOEXCEPT override;
527 bool do_always_noconv() const _NOEXCEPT override;
528 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;
529 int do_max_length() const _NOEXCEPT override;
532 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
534 class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8_utf16<char16_t> : public codecvt<char16_t, char, mbstate_t> {
535 unsigned long __maxcode_;
536 codecvt_mode __mode_;
539 typedef char16_t intern_type;
540 typedef char extern_type;
541 typedef mbstate_t state_type;
543 _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf8_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode)
544 : codecvt<char16_t, char, mbstate_t>(__refs), __maxcode_(__maxcode), __mode_(__mode) {}
545 _LIBCPP_SUPPRESS_DEPRECATED_POP
548 result do_out(state_type& __st,
549 const intern_type* __frm,
550 const intern_type* __frm_end,
551 const intern_type*& __frm_nxt,
553 extern_type* __to_end,
554 extern_type*& __to_nxt) const override;
555 result do_in(state_type& __st,
556 const extern_type* __frm,
557 const extern_type* __frm_end,
558 const extern_type*& __frm_nxt,
560 intern_type* __to_end,
561 intern_type*& __to_nxt) const override;
562 result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override;
563 int do_encoding() const _NOEXCEPT override;
564 bool do_always_noconv() const _NOEXCEPT override;
565 int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override;
566 int do_max_length() const _NOEXCEPT override;
569 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
570 template <class _Elem, unsigned long _Maxcode = 0x10ffff, codecvt_mode _Mode = (codecvt_mode)0>
571 class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 codecvt_utf8_utf16 : public __codecvt_utf8_utf16<_Elem> {
573 _LIBCPP_HIDE_FROM_ABI explicit codecvt_utf8_utf16(size_t __refs = 0)
574 : __codecvt_utf8_utf16<_Elem>(__refs, _Maxcode, _Mode) {}
576 _LIBCPP_HIDE_FROM_ABI ~codecvt_utf8_utf16() {}
578 _LIBCPP_SUPPRESS_DEPRECATED_POP
580 _LIBCPP_END_NAMESPACE_STD
582 # endif // _LIBCPP_STD_VER < 26 || defined(_LIBCPP_BUILDING_LIBRARY) || defined(_LIBCPP_ENABLE_CXX26_REMOVED_CODECVT)
584 # if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
590 # include <initializer_list>
595 # include <stdexcept>
596 # include <type_traits>
599 #endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)
601 #endif // _LIBCPP_CODECVT