1// -*- C++ -*- 2//===----------------------------------------------------------------------===// 3// 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 7// 8//===----------------------------------------------------------------------===// 9 10#ifndef _LIBCPP_IOMANIP 11#define _LIBCPP_IOMANIP 12 13/* 14 iomanip synopsis 15 16namespace std { 17 18// types T1, T2, ... are unspecified implementation types 19T1 resetiosflags(ios_base::fmtflags mask); 20T2 setiosflags (ios_base::fmtflags mask); 21T3 setbase(int base); 22template<charT> T4 setfill(charT c); 23T5 setprecision(int n); 24T6 setw(int n); 25template <class moneyT> T7 get_money(moneyT& mon, bool intl = false); 26template <class charT, class moneyT> T8 put_money(const moneyT& mon, bool intl = false); 27template <class charT> T9 get_time(struct tm* tmb, const charT* fmt); 28template <class charT> T10 put_time(const struct tm* tmb, const charT* fmt); 29 30template <class charT> 31 T11 quoted(const charT* s, charT delim=charT('"'), charT escape=charT('\\')); // C++14 32 33template <class charT, class traits, class Allocator> 34 T12 quoted(const basic_string<charT, traits, Allocator>& s, 35 charT delim=charT('"'), charT escape=charT('\\')); // C++14 36 37template <class charT, class traits, class Allocator> 38 T13 quoted(basic_string<charT, traits, Allocator>& s, 39 charT delim=charT('"'), charT escape=charT('\\')); // C++14 40 41} // std 42 43*/ 44 45#if __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) 46# include <__cxx03/iomanip> 47#else 48# include <__config> 49 50# if _LIBCPP_HAS_LOCALIZATION 51 52# include <__ostream/put_character_sequence.h> 53# include <ios> 54# include <iosfwd> 55# include <locale> 56# include <version> 57 58# if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 59# pragma GCC system_header 60# endif 61 62_LIBCPP_BEGIN_NAMESPACE_STD 63 64// resetiosflags 65 66class __iom_t1 { 67 ios_base::fmtflags __mask_; 68 69public: 70 _LIBCPP_HIDE_FROM_ABI explicit __iom_t1(ios_base::fmtflags __m) : __mask_(__m) {} 71 72 template <class _CharT, class _Traits> 73 friend _LIBCPP_HIDE_FROM_ABI basic_istream<_CharT, _Traits>& 74 operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t1& __x) { 75 __is.unsetf(__x.__mask_); 76 return __is; 77 } 78 79 template <class _CharT, class _Traits> 80 friend _LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& 81 operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t1& __x) { 82 __os.unsetf(__x.__mask_); 83 return __os; 84 } 85}; 86 87inline _LIBCPP_HIDE_FROM_ABI __iom_t1 resetiosflags(ios_base::fmtflags __mask) { return __iom_t1(__mask); } 88 89// setiosflags 90 91class __iom_t2 { 92 ios_base::fmtflags __mask_; 93 94public: 95 _LIBCPP_HIDE_FROM_ABI explicit __iom_t2(ios_base::fmtflags __m) : __mask_(__m) {} 96 97 template <class _CharT, class _Traits> 98 friend _LIBCPP_HIDE_FROM_ABI basic_istream<_CharT, _Traits>& 99 operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t2& __x) { 100 __is.setf(__x.__mask_); 101 return __is; 102 } 103 104 template <class _CharT, class _Traits> 105 friend _LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& 106 operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t2& __x) { 107 __os.setf(__x.__mask_); 108 return __os; 109 } 110}; 111 112inline _LIBCPP_HIDE_FROM_ABI __iom_t2 setiosflags(ios_base::fmtflags __mask) { return __iom_t2(__mask); } 113 114// setbase 115 116class __iom_t3 { 117 int __base_; 118 119public: 120 _LIBCPP_HIDE_FROM_ABI explicit __iom_t3(int __b) : __base_(__b) {} 121 122 template <class _CharT, class _Traits> 123 friend _LIBCPP_HIDE_FROM_ABI basic_istream<_CharT, _Traits>& 124 operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t3& __x) { 125 __is.setf(__x.__base_ == 8 ? ios_base::oct 126 : __x.__base_ == 10 ? ios_base::dec 127 : __x.__base_ == 16 ? ios_base::hex 128 : ios_base::fmtflags(0), 129 ios_base::basefield); 130 return __is; 131 } 132 133 template <class _CharT, class _Traits> 134 friend _LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& 135 operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t3& __x) { 136 __os.setf(__x.__base_ == 8 ? ios_base::oct 137 : __x.__base_ == 10 ? ios_base::dec 138 : __x.__base_ == 16 ? ios_base::hex 139 : ios_base::fmtflags(0), 140 ios_base::basefield); 141 return __os; 142 } 143}; 144 145inline _LIBCPP_HIDE_FROM_ABI __iom_t3 setbase(int __base) { return __iom_t3(__base); } 146 147// setfill 148 149template <class _CharT> 150class __iom_t4 { 151 _CharT __fill_; 152 153public: 154 _LIBCPP_HIDE_FROM_ABI explicit __iom_t4(_CharT __c) : __fill_(__c) {} 155 156 template <class _Traits> 157 friend _LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& 158 operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t4& __x) { 159 __os.fill(__x.__fill_); 160 return __os; 161 } 162}; 163 164template <class _CharT> 165inline _LIBCPP_HIDE_FROM_ABI __iom_t4<_CharT> setfill(_CharT __c) { 166 return __iom_t4<_CharT>(__c); 167} 168 169// setprecision 170 171class __iom_t5 { 172 int __n_; 173 174public: 175 _LIBCPP_HIDE_FROM_ABI explicit __iom_t5(int __n) : __n_(__n) {} 176 177 template <class _CharT, class _Traits> 178 friend _LIBCPP_HIDE_FROM_ABI basic_istream<_CharT, _Traits>& 179 operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t5& __x) { 180 __is.precision(__x.__n_); 181 return __is; 182 } 183 184 template <class _CharT, class _Traits> 185 friend _LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& 186 operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t5& __x) { 187 __os.precision(__x.__n_); 188 return __os; 189 } 190}; 191 192inline _LIBCPP_HIDE_FROM_ABI __iom_t5 setprecision(int __n) { return __iom_t5(__n); } 193 194// setw 195 196class __iom_t6 { 197 int __n_; 198 199public: 200 _LIBCPP_HIDE_FROM_ABI explicit __iom_t6(int __n) : __n_(__n) {} 201 202 template <class _CharT, class _Traits> 203 friend _LIBCPP_HIDE_FROM_ABI basic_istream<_CharT, _Traits>& 204 operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t6& __x) { 205 __is.width(__x.__n_); 206 return __is; 207 } 208 209 template <class _CharT, class _Traits> 210 friend _LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& 211 operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t6& __x) { 212 __os.width(__x.__n_); 213 return __os; 214 } 215}; 216 217inline _LIBCPP_HIDE_FROM_ABI __iom_t6 setw(int __n) { return __iom_t6(__n); } 218 219// get_money 220 221template <class _MoneyT> 222class __iom_t7; 223 224template <class _CharT, class _Traits, class _MoneyT> 225_LIBCPP_HIDE_FROM_ABI basic_istream<_CharT, _Traits>& 226operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t7<_MoneyT>& __x); 227 228template <class _MoneyT> 229class __iom_t7 { 230 _MoneyT& __mon_; 231 bool __intl_; 232 233public: 234 _LIBCPP_HIDE_FROM_ABI __iom_t7(_MoneyT& __mon, bool __intl) : __mon_(__mon), __intl_(__intl) {} 235 236 template <class _CharT, class _Traits, class _Mp> 237 friend basic_istream<_CharT, _Traits>& operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t7<_Mp>& __x); 238}; 239 240template <class _CharT, class _Traits, class _MoneyT> 241_LIBCPP_HIDE_FROM_ABI basic_istream<_CharT, _Traits>& 242operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t7<_MoneyT>& __x) { 243# if _LIBCPP_HAS_EXCEPTIONS 244 try { 245# endif // _LIBCPP_HAS_EXCEPTIONS 246 typename basic_istream<_CharT, _Traits>::sentry __s(__is); 247 if (__s) { 248 typedef istreambuf_iterator<_CharT, _Traits> _Ip; 249 typedef money_get<_CharT, _Ip> _Fp; 250 ios_base::iostate __err = ios_base::goodbit; 251 const _Fp& __mf = std::use_facet<_Fp>(__is.getloc()); 252 __mf.get(_Ip(__is), _Ip(), __x.__intl_, __is, __err, __x.__mon_); 253 __is.setstate(__err); 254 } 255# if _LIBCPP_HAS_EXCEPTIONS 256 } catch (...) { 257 __is.__set_badbit_and_consider_rethrow(); 258 } 259# endif // _LIBCPP_HAS_EXCEPTIONS 260 return __is; 261} 262 263template <class _MoneyT> 264inline _LIBCPP_HIDE_FROM_ABI __iom_t7<_MoneyT> get_money(_MoneyT& __mon, bool __intl = false) { 265 return __iom_t7<_MoneyT>(__mon, __intl); 266} 267 268// put_money 269 270template <class _MoneyT> 271class __iom_t8; 272 273template <class _CharT, class _Traits, class _MoneyT> 274_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& 275operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t8<_MoneyT>& __x); 276 277template <class _MoneyT> 278class __iom_t8 { 279 const _MoneyT& __mon_; 280 bool __intl_; 281 282public: 283 _LIBCPP_HIDE_FROM_ABI __iom_t8(const _MoneyT& __mon, bool __intl) : __mon_(__mon), __intl_(__intl) {} 284 285 template <class _CharT, class _Traits, class _Mp> 286 friend basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t8<_Mp>& __x); 287}; 288 289template <class _CharT, class _Traits, class _MoneyT> 290_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& 291operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t8<_MoneyT>& __x) { 292# if _LIBCPP_HAS_EXCEPTIONS 293 try { 294# endif // _LIBCPP_HAS_EXCEPTIONS 295 typename basic_ostream<_CharT, _Traits>::sentry __s(__os); 296 if (__s) { 297 typedef ostreambuf_iterator<_CharT, _Traits> _Op; 298 typedef money_put<_CharT, _Op> _Fp; 299 const _Fp& __mf = std::use_facet<_Fp>(__os.getloc()); 300 if (__mf.put(_Op(__os), __x.__intl_, __os, __os.fill(), __x.__mon_).failed()) 301 __os.setstate(ios_base::badbit); 302 } 303# if _LIBCPP_HAS_EXCEPTIONS 304 } catch (...) { 305 __os.__set_badbit_and_consider_rethrow(); 306 } 307# endif // _LIBCPP_HAS_EXCEPTIONS 308 return __os; 309} 310 311template <class _MoneyT> 312inline _LIBCPP_HIDE_FROM_ABI __iom_t8<_MoneyT> put_money(const _MoneyT& __mon, bool __intl = false) { 313 return __iom_t8<_MoneyT>(__mon, __intl); 314} 315 316// get_time 317 318template <class _CharT> 319class __iom_t9; 320 321template <class _CharT, class _Traits> 322_LIBCPP_HIDE_FROM_ABI basic_istream<_CharT, _Traits>& 323operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t9<_CharT>& __x); 324 325template <class _CharT> 326class __iom_t9 { 327 tm* __tm_; 328 const _CharT* __fmt_; 329 330public: 331 _LIBCPP_HIDE_FROM_ABI __iom_t9(tm* __tm, const _CharT* __fmt) : __tm_(__tm), __fmt_(__fmt) {} 332 333 template <class _Cp, class _Traits> 334 friend basic_istream<_Cp, _Traits>& operator>>(basic_istream<_Cp, _Traits>& __is, const __iom_t9<_Cp>& __x); 335}; 336 337template <class _CharT, class _Traits> 338_LIBCPP_HIDE_FROM_ABI basic_istream<_CharT, _Traits>& 339operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t9<_CharT>& __x) { 340# if _LIBCPP_HAS_EXCEPTIONS 341 try { 342# endif // _LIBCPP_HAS_EXCEPTIONS 343 typename basic_istream<_CharT, _Traits>::sentry __s(__is); 344 if (__s) { 345 typedef istreambuf_iterator<_CharT, _Traits> _Ip; 346 typedef time_get<_CharT, _Ip> _Fp; 347 ios_base::iostate __err = ios_base::goodbit; 348 const _Fp& __tf = std::use_facet<_Fp>(__is.getloc()); 349 __tf.get(_Ip(__is), _Ip(), __is, __err, __x.__tm_, __x.__fmt_, __x.__fmt_ + _Traits::length(__x.__fmt_)); 350 __is.setstate(__err); 351 } 352# if _LIBCPP_HAS_EXCEPTIONS 353 } catch (...) { 354 __is.__set_badbit_and_consider_rethrow(); 355 } 356# endif // _LIBCPP_HAS_EXCEPTIONS 357 return __is; 358} 359 360template <class _CharT> 361inline _LIBCPP_HIDE_FROM_ABI __iom_t9<_CharT> get_time(tm* __tm, const _CharT* __fmt) { 362 return __iom_t9<_CharT>(__tm, __fmt); 363} 364 365// put_time 366 367template <class _CharT> 368class __iom_t10; 369 370template <class _CharT, class _Traits> 371_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& 372operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t10<_CharT>& __x); 373 374template <class _CharT> 375class __iom_t10 { 376 const tm* __tm_; 377 const _CharT* __fmt_; 378 379public: 380 _LIBCPP_HIDE_FROM_ABI __iom_t10(const tm* __tm, const _CharT* __fmt) : __tm_(__tm), __fmt_(__fmt) {} 381 382 template <class _Cp, class _Traits> 383 friend basic_ostream<_Cp, _Traits>& operator<<(basic_ostream<_Cp, _Traits>& __os, const __iom_t10<_Cp>& __x); 384}; 385 386template <class _CharT, class _Traits> 387_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& 388operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t10<_CharT>& __x) { 389# if _LIBCPP_HAS_EXCEPTIONS 390 try { 391# endif // _LIBCPP_HAS_EXCEPTIONS 392 typename basic_ostream<_CharT, _Traits>::sentry __s(__os); 393 if (__s) { 394 typedef ostreambuf_iterator<_CharT, _Traits> _Op; 395 typedef time_put<_CharT, _Op> _Fp; 396 const _Fp& __tf = std::use_facet<_Fp>(__os.getloc()); 397 if (__tf.put(_Op(__os), __os, __os.fill(), __x.__tm_, __x.__fmt_, __x.__fmt_ + _Traits::length(__x.__fmt_)) 398 .failed()) 399 __os.setstate(ios_base::badbit); 400 } 401# if _LIBCPP_HAS_EXCEPTIONS 402 } catch (...) { 403 __os.__set_badbit_and_consider_rethrow(); 404 } 405# endif // _LIBCPP_HAS_EXCEPTIONS 406 return __os; 407} 408 409template <class _CharT> 410inline _LIBCPP_HIDE_FROM_ABI __iom_t10<_CharT> put_time(const tm* __tm, const _CharT* __fmt) { 411 return __iom_t10<_CharT>(__tm, __fmt); 412} 413 414template <class _CharT, class _Traits> 415_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& __quoted_output( 416 basic_ostream<_CharT, _Traits>& __os, 417 const _CharT* __first, 418 const _CharT* __last, 419 _CharT __delim, 420 _CharT __escape) { 421 basic_string<_CharT, _Traits> __str; 422 __str.push_back(__delim); 423 for (; __first != __last; ++__first) { 424 if (_Traits::eq(*__first, __escape) || _Traits::eq(*__first, __delim)) 425 __str.push_back(__escape); 426 __str.push_back(*__first); 427 } 428 __str.push_back(__delim); 429 return std::__put_character_sequence(__os, __str.data(), __str.size()); 430} 431 432template <class _CharT, class _Traits, class _String> 433_LIBCPP_HIDE_FROM_ABI basic_istream<_CharT, _Traits>& 434__quoted_input(basic_istream<_CharT, _Traits>& __is, _String& __string, _CharT __delim, _CharT __escape) { 435 __string.clear(); 436 _CharT __c; 437 __is >> __c; 438 if (__is.fail()) 439 return __is; 440 441 if (!_Traits::eq(__c, __delim)) { 442 // no delimiter, read the whole string 443 __is.unget(); 444 __is >> __string; 445 return __is; 446 } 447 448 __save_flags<_CharT, _Traits> __sf(__is); 449 std::noskipws(__is); 450 while (true) { 451 __is >> __c; 452 if (__is.fail()) 453 break; 454 if (_Traits::eq(__c, __escape)) { 455 __is >> __c; 456 if (__is.fail()) 457 break; 458 } else if (_Traits::eq(__c, __delim)) 459 break; 460 __string.push_back(__c); 461 } 462 return __is; 463} 464 465template <class _CharT, class _Traits> 466struct _LIBCPP_HIDDEN __quoted_output_proxy { 467 const _CharT* __first_; 468 const _CharT* __last_; 469 _CharT __delim_; 470 _CharT __escape_; 471 472 _LIBCPP_HIDE_FROM_ABI explicit __quoted_output_proxy(const _CharT* __f, const _CharT* __l, _CharT __d, _CharT __e) 473 : __first_(__f), __last_(__l), __delim_(__d), __escape_(__e) {} 474 475 template <class _T2, __enable_if_t<_IsSame<_Traits, void>::value || _IsSame<_Traits, _T2>::value, int> = 0> 476 friend _LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _T2>& 477 operator<<(basic_ostream<_CharT, _T2>& __os, const __quoted_output_proxy& __p) { 478 return std::__quoted_output(__os, __p.__first_, __p.__last_, __p.__delim_, __p.__escape_); 479 } 480}; 481 482template <class _CharT, class _Traits, class _Allocator> 483struct _LIBCPP_HIDDEN __quoted_proxy { 484 basic_string<_CharT, _Traits, _Allocator>& __string_; 485 _CharT __delim_; 486 _CharT __escape_; 487 488 _LIBCPP_HIDE_FROM_ABI explicit __quoted_proxy(basic_string<_CharT, _Traits, _Allocator>& __s, _CharT __d, _CharT __e) 489 : __string_(__s), __delim_(__d), __escape_(__e) {} 490 491 friend _LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& 492 operator<<(basic_ostream<_CharT, _Traits>& __os, const __quoted_proxy& __p) { 493 return std::__quoted_output( 494 __os, __p.__string_.data(), __p.__string_.data() + __p.__string_.size(), __p.__delim_, __p.__escape_); 495 } 496 497 friend _LIBCPP_HIDE_FROM_ABI basic_istream<_CharT, _Traits>& 498 operator>>(basic_istream<_CharT, _Traits>& __is, const __quoted_proxy& __p) { 499 return std::__quoted_input(__is, __p.__string_, __p.__delim_, __p.__escape_); 500 } 501}; 502 503template <class _CharT, class _Traits, class _Allocator> 504_LIBCPP_HIDE_FROM_ABI __quoted_output_proxy<_CharT, _Traits> 505__quoted(const basic_string<_CharT, _Traits, _Allocator>& __s, 506 _CharT __delim = _CharT('"'), 507 _CharT __escape = _CharT('\\')) { 508 return __quoted_output_proxy<_CharT, _Traits>(__s.data(), __s.data() + __s.size(), __delim, __escape); 509} 510 511template <class _CharT, class _Traits, class _Allocator> 512_LIBCPP_HIDE_FROM_ABI __quoted_proxy<_CharT, _Traits, _Allocator> 513__quoted(basic_string<_CharT, _Traits, _Allocator>& __s, _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\')) { 514 return __quoted_proxy<_CharT, _Traits, _Allocator>(__s, __delim, __escape); 515} 516 517# if _LIBCPP_STD_VER >= 14 518 519template <class _CharT> 520_LIBCPP_HIDE_FROM_ABI auto quoted(const _CharT* __s, _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\')) { 521 const _CharT* __end = __s; 522 while (*__end) 523 ++__end; 524 return __quoted_output_proxy<_CharT, void>(__s, __end, __delim, __escape); 525} 526 527template <class _CharT, class _Traits, class _Allocator> 528_LIBCPP_HIDE_FROM_ABI auto 529quoted(const basic_string<_CharT, _Traits, _Allocator>& __s, 530 _CharT __delim = _CharT('"'), 531 _CharT __escape = _CharT('\\')) { 532 return __quoted_output_proxy<_CharT, _Traits>(__s.data(), __s.data() + __s.size(), __delim, __escape); 533} 534 535template <class _CharT, class _Traits, class _Allocator> 536_LIBCPP_HIDE_FROM_ABI auto 537quoted(basic_string<_CharT, _Traits, _Allocator>& __s, _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\')) { 538 return __quoted_proxy<_CharT, _Traits, _Allocator>(__s, __delim, __escape); 539} 540 541template <class _CharT, class _Traits> 542_LIBCPP_HIDE_FROM_ABI auto 543quoted(basic_string_view<_CharT, _Traits> __sv, _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\')) { 544 return __quoted_output_proxy<_CharT, _Traits>(__sv.data(), __sv.data() + __sv.size(), __delim, __escape); 545} 546 547# endif // _LIBCPP_STD_VER >= 14 548 549_LIBCPP_END_NAMESPACE_STD 550 551# endif // _LIBCPP_HAS_LOCALIZATION 552 553# if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 554# include <array> 555# include <bitset> 556# include <deque> 557# include <format> 558# include <functional> 559# include <istream> 560# include <ostream> 561# include <print> 562# include <queue> 563# include <stack> 564# include <unordered_map> 565# include <vector> 566# endif 567#endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) 568 569#endif // _LIBCPP_IOMANIP 570