LCOV - code coverage report
Current view: top level - v1 - ostream (source / functions) Coverage Total Hit
Test: vrml_testfiles.info Lines: 82.8 % 29 24
Test Date: 2024-03-08 16:12:17 Functions: 100.0 % 6 6

            Line data    Source code
       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_OSTREAM
      11              : #define _LIBCPP_OSTREAM
      12              : 
      13              : /*
      14              :     ostream synopsis
      15              : 
      16              : template <class charT, class traits = char_traits<charT> >
      17              : class basic_ostream
      18              :     : virtual public basic_ios<charT,traits>
      19              : {
      20              : public:
      21              :     // types (inherited from basic_ios (27.5.4)):
      22              :     typedef charT                          char_type;
      23              :     typedef traits                         traits_type;
      24              :     typedef typename traits_type::int_type int_type;
      25              :     typedef typename traits_type::pos_type pos_type;
      26              :     typedef typename traits_type::off_type off_type;
      27              : 
      28              :     // 27.7.2.2 Constructor/destructor:
      29              :     explicit basic_ostream(basic_streambuf<char_type,traits>* sb);
      30              :     basic_ostream(basic_ostream&& rhs);
      31              :     virtual ~basic_ostream();
      32              : 
      33              :     // 27.7.2.3 Assign/swap
      34              :     basic_ostream& operator=(const basic_ostream& rhs) = delete; // C++14
      35              :     basic_ostream& operator=(basic_ostream&& rhs);
      36              :     void swap(basic_ostream& rhs);
      37              : 
      38              :     // 27.7.2.4 Prefix/suffix:
      39              :     class sentry;
      40              : 
      41              :     // 27.7.2.6 Formatted output:
      42              :     basic_ostream& operator<<(basic_ostream& (*pf)(basic_ostream&));
      43              :     basic_ostream& operator<<(basic_ios<charT, traits>& (*pf)(basic_ios<charT,traits>&));
      44              :     basic_ostream& operator<<(ios_base& (*pf)(ios_base&));
      45              :     basic_ostream& operator<<(bool n);
      46              :     basic_ostream& operator<<(short n);
      47              :     basic_ostream& operator<<(unsigned short n);
      48              :     basic_ostream& operator<<(int n);
      49              :     basic_ostream& operator<<(unsigned int n);
      50              :     basic_ostream& operator<<(long n);
      51              :     basic_ostream& operator<<(unsigned long n);
      52              :     basic_ostream& operator<<(long long n);
      53              :     basic_ostream& operator<<(unsigned long long n);
      54              :     basic_ostream& operator<<(float f);
      55              :     basic_ostream& operator<<(double f);
      56              :     basic_ostream& operator<<(long double f);
      57              :     basic_ostream& operator<<(const void* p);
      58              :     basic_ostream& operator<<(const volatile void* val); // C++23
      59              :     basic_ostream& operator<<(basic_streambuf<char_type,traits>* sb);
      60              :     basic_ostream& operator<<(nullptr_t);
      61              : 
      62              :     // 27.7.2.7 Unformatted output:
      63              :     basic_ostream& put(char_type c);
      64              :     basic_ostream& write(const char_type* s, streamsize n);
      65              :     basic_ostream& flush();
      66              : 
      67              :     // 27.7.2.5 seeks:
      68              :     pos_type tellp();
      69              :     basic_ostream& seekp(pos_type);
      70              :     basic_ostream& seekp(off_type, ios_base::seekdir);
      71              : protected:
      72              :     basic_ostream(const basic_ostream& rhs) = delete;
      73              :     basic_ostream(basic_ostream&& rhs);
      74              :     // 27.7.3.3 Assign/swap
      75              :     basic_ostream& operator=(basic_ostream& rhs) = delete;
      76              :     basic_ostream& operator=(const basic_ostream&& rhs);
      77              :     void swap(basic_ostream& rhs);
      78              : };
      79              : 
      80              : // 27.7.2.6.4 character inserters
      81              : 
      82              : template<class charT, class traits>
      83              :   basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, charT);
      84              : 
      85              : template<class charT, class traits>
      86              :   basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, char);
      87              : 
      88              : template<class traits>
      89              :   basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, char);
      90              : 
      91              : // signed and unsigned
      92              : 
      93              : template<class traits>
      94              :   basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, signed char);
      95              : 
      96              : template<class traits>
      97              :   basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, unsigned char);
      98              : 
      99              : // NTBS
     100              : template<class charT, class traits>
     101              :   basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, const charT*);
     102              : 
     103              : template<class charT, class traits>
     104              :   basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, const char*);
     105              : 
     106              : template<class traits>
     107              :   basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, const char*);
     108              : 
     109              : // signed and unsigned
     110              : template<class traits>
     111              : basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, const signed char*);
     112              : 
     113              : template<class traits>
     114              :   basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, const unsigned char*);
     115              : 
     116              : // swap:
     117              : template <class charT, class traits>
     118              :   void swap(basic_ostream<charT, traits>& x, basic_ostream<charT, traits>& y);
     119              : 
     120              : template <class charT, class traits>
     121              :   basic_ostream<charT,traits>& endl(basic_ostream<charT,traits>& os);
     122              : 
     123              : template <class charT, class traits>
     124              :   basic_ostream<charT,traits>& ends(basic_ostream<charT,traits>& os);
     125              : 
     126              : template <class charT, class traits>
     127              :   basic_ostream<charT,traits>& flush(basic_ostream<charT,traits>& os);
     128              : 
     129              : // rvalue stream insertion
     130              : template <class Stream, class T>
     131              :   Stream&& operator<<(Stream&& os, const T& x);
     132              : 
     133              : template<class traits>
     134              : basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>&, wchar_t) = delete;               // since C++20
     135              : template<class traits>
     136              : basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>&, char8_t) = delete;               // since C++20
     137              : template<class traits>
     138              : basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>&, char16_t) = delete;              // since C++20
     139              : template<class traits>
     140              : basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>&, char32_t) = delete;              // since C++20
     141              : template<class traits>
     142              : basic_ostream<wchar_t, traits>& operator<<(basic_ostream<wchar_t, traits>&, char8_t) = delete;         // since C++20
     143              : template<class traits>
     144              : basic_ostream<wchar_t, traits>& operator<<(basic_ostream<wchar_t, traits>&, char16_t) = delete;        // since C++20
     145              : template<class traits>
     146              : basic_ostream<wchar_t, traits>& operator<<(basic_ostream<wchar_t, traits>&, char32_t) = delete;        // since C++20
     147              : template<class traits>
     148              : basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>&, const wchar_t*) = delete;        // since C++20
     149              : template<class traits>
     150              : basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>&, const char8_t*) = delete;        // since C++20
     151              : template<class traits>
     152              : basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>&, const char16_t*) = delete;       // since C++20
     153              : template<class traits>
     154              : basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>&, const char32_t*) = delete;       // since C++20
     155              : template<class traits>
     156              : basic_ostream<wchar_t, traits>& operator<<(basic_ostream<wchar_t, traits>&, const char8_t*) = delete;  // since C++20
     157              : template<class traits>
     158              : basic_ostream<wchar_t, traits>& operator<<(basic_ostream<wchar_t, traits>&, const char16_t*) = delete; // since C++20
     159              : template<class traits>
     160              : basic_ostream<wchar_t, traits>& operator<<(basic_ostream<wchar_t, traits>&, const char32_t*) = delete; // since C++20
     161              : 
     162              : }  // std
     163              : 
     164              : */
     165              : 
     166              : #include <__assert> // all public C++ headers provide the assertion handler
     167              : #include <__config>
     168              : #include <__memory/shared_ptr.h>
     169              : #include <__memory/unique_ptr.h>
     170              : #include <bitset>
     171              : #include <ios>
     172              : #include <locale>
     173              : #include <new>
     174              : #include <streambuf>
     175              : #include <version>
     176              : 
     177              : #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
     178              : #  pragma GCC system_header
     179              : #endif
     180              : 
     181              : _LIBCPP_BEGIN_NAMESPACE_STD
     182              : 
     183              : template <class _CharT, class _Traits>
     184              : class _LIBCPP_TEMPLATE_VIS basic_ostream
     185              :     : virtual public basic_ios<_CharT, _Traits>
     186              : {
     187              : public:
     188              :     // types (inherited from basic_ios (27.5.4)):
     189              :     typedef _CharT                         char_type;
     190              :     typedef _Traits                        traits_type;
     191              :     typedef typename traits_type::int_type int_type;
     192              :     typedef typename traits_type::pos_type pos_type;
     193              :     typedef typename traits_type::off_type off_type;
     194              : 
     195              :     // 27.7.2.2 Constructor/destructor:
     196              :     inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
     197              :     explicit basic_ostream(basic_streambuf<char_type, traits_type>* __sb)
     198              :     { this->init(__sb); }
     199              :     ~basic_ostream() override;
     200              : protected:
     201              :     inline _LIBCPP_INLINE_VISIBILITY
     202              :     basic_ostream(basic_ostream&& __rhs);
     203              : 
     204              :     // 27.7.2.3 Assign/swap
     205              :     inline _LIBCPP_INLINE_VISIBILITY
     206              :     basic_ostream& operator=(basic_ostream&& __rhs);
     207              : 
     208              :     inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
     209              :     void swap(basic_ostream& __rhs)
     210              :     { basic_ios<char_type, traits_type>::swap(__rhs); }
     211              : 
     212              :     basic_ostream           (const basic_ostream& __rhs) = delete;
     213              :     basic_ostream& operator=(const basic_ostream& __rhs) = delete;
     214              : 
     215              : public:
     216              :     // 27.7.2.4 Prefix/suffix:
     217              :     class _LIBCPP_TEMPLATE_VIS sentry;
     218              : 
     219              :     // 27.7.2.6 Formatted output:
     220              :     inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
     221           68 :     basic_ostream& operator<<(basic_ostream& (*__pf)(basic_ostream&))
     222           68 :     { return __pf(*this); }
     223              : 
     224              :     inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
     225              :     basic_ostream& operator<<(basic_ios<char_type, traits_type>&
     226              :                               (*__pf)(basic_ios<char_type,traits_type>&))
     227              :     { __pf(*this); return *this; }
     228              : 
     229              :     inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
     230              :     basic_ostream& operator<<(ios_base& (*__pf)(ios_base&))
     231              :     { __pf(*this); return *this; }
     232              : 
     233              :     basic_ostream& operator<<(bool __n);
     234              :     basic_ostream& operator<<(short __n);
     235              :     basic_ostream& operator<<(unsigned short __n);
     236              :     basic_ostream& operator<<(int __n);
     237              :     basic_ostream& operator<<(unsigned int __n);
     238              :     basic_ostream& operator<<(long __n);
     239              :     basic_ostream& operator<<(unsigned long __n);
     240              :     basic_ostream& operator<<(long long __n);
     241              :     basic_ostream& operator<<(unsigned long long __n);
     242              :     basic_ostream& operator<<(float __f);
     243              :     basic_ostream& operator<<(double __f);
     244              :     basic_ostream& operator<<(long double __f);
     245              :     basic_ostream& operator<<(const void* __p);
     246              : 
     247              : #if _LIBCPP_STD_VER > 20
     248              :     _LIBCPP_HIDE_FROM_ABI
     249              :     basic_ostream& operator<<(const volatile void* __p) {
     250              :         return operator<<(const_cast<const void*>(__p));
     251              :     }
     252              : #endif
     253              : 
     254              :     basic_ostream& operator<<(basic_streambuf<char_type, traits_type>* __sb);
     255              : 
     256              : #if _LIBCPP_STD_VER > 14
     257              : // LWG 2221 - nullptr. This is not backported to older standards modes.
     258              : // See https://reviews.llvm.org/D127033 for more info on the rationale.
     259              :     _LIBCPP_INLINE_VISIBILITY
     260              :     basic_ostream& operator<<(nullptr_t)
     261              :     { return *this << "nullptr"; }
     262              : #endif
     263              : 
     264              :     // 27.7.2.7 Unformatted output:
     265              :     basic_ostream& put(char_type __c);
     266              :     basic_ostream& write(const char_type* __s, streamsize __n);
     267              :     basic_ostream& flush();
     268              : 
     269              :     // 27.7.2.5 seeks:
     270              :     inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
     271              :     pos_type tellp();
     272              :     inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
     273              :     basic_ostream& seekp(pos_type __pos);
     274              :     inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1
     275              :     basic_ostream& seekp(off_type __off, ios_base::seekdir __dir);
     276              : 
     277              : protected:
     278              :     _LIBCPP_INLINE_VISIBILITY
     279              :     basic_ostream() {}  // extension, intentially does not initialize
     280              : };
     281              : 
     282              : template <class _CharT, class _Traits>
     283              : class _LIBCPP_TEMPLATE_VIS basic_ostream<_CharT, _Traits>::sentry
     284              : {
     285              :     bool __ok_;
     286              :     basic_ostream<_CharT, _Traits>& __os_;
     287              : 
     288              : public:
     289              :     explicit sentry(basic_ostream<_CharT, _Traits>& __os);
     290              :     ~sentry();
     291              :     sentry(const sentry&) = delete;
     292              :     sentry& operator=(const sentry&) = delete;
     293              : 
     294              :     _LIBCPP_INLINE_VISIBILITY
     295          124 :     explicit operator bool() const {return __ok_;}
     296              : };
     297              : 
     298              : template <class _CharT, class _Traits>
     299              : basic_ostream<_CharT, _Traits>::sentry::sentry(basic_ostream<_CharT, _Traits>& __os)
     300              :     : __ok_(false),
     301              :       __os_(__os)
     302              : {
     303              :     if (__os.good())
     304              :     {
     305              :         if (__os.tie())
     306              :             __os.tie()->flush();
     307              :         __ok_ = true;
     308              :     }
     309              : }
     310              : 
     311              : template <class _CharT, class _Traits>
     312              : basic_ostream<_CharT, _Traits>::sentry::~sentry()
     313              : {
     314              :     if (__os_.rdbuf() && __os_.good() && (__os_.flags() & ios_base::unitbuf)
     315              :                       && !uncaught_exception())
     316              :     {
     317              : #ifndef _LIBCPP_NO_EXCEPTIONS
     318              :         try
     319              :         {
     320              : #endif // _LIBCPP_NO_EXCEPTIONS
     321              :             if (__os_.rdbuf()->pubsync() == -1)
     322              :                 __os_.setstate(ios_base::badbit);
     323              : #ifndef _LIBCPP_NO_EXCEPTIONS
     324              :         }
     325              :         catch (...)
     326              :         {
     327              :         }
     328              : #endif // _LIBCPP_NO_EXCEPTIONS
     329              :     }
     330              : }
     331              : 
     332              : template <class _CharT, class _Traits>
     333              : basic_ostream<_CharT, _Traits>::basic_ostream(basic_ostream&& __rhs)
     334              : {
     335              :     this->move(__rhs);
     336              : }
     337              : 
     338              : template <class _CharT, class _Traits>
     339              : basic_ostream<_CharT, _Traits>&
     340              : basic_ostream<_CharT, _Traits>::operator=(basic_ostream&& __rhs)
     341              : {
     342              :     swap(__rhs);
     343              :     return *this;
     344              : }
     345              : 
     346              : template <class _CharT, class _Traits>
     347              : basic_ostream<_CharT, _Traits>::~basic_ostream()
     348              : {
     349              : }
     350              : 
     351              : template <class _CharT, class _Traits>
     352              : basic_ostream<_CharT, _Traits>&
     353              : basic_ostream<_CharT, _Traits>::operator<<(basic_streambuf<char_type, traits_type>* __sb)
     354              : {
     355              : #ifndef _LIBCPP_NO_EXCEPTIONS
     356              :     try
     357              :     {
     358              : #endif // _LIBCPP_NO_EXCEPTIONS
     359              :         sentry __s(*this);
     360              :         if (__s)
     361              :         {
     362              :             if (__sb)
     363              :             {
     364              : #ifndef _LIBCPP_NO_EXCEPTIONS
     365              :                 try
     366              :                 {
     367              : #endif // _LIBCPP_NO_EXCEPTIONS
     368              :                     typedef istreambuf_iterator<_CharT, _Traits> _Ip;
     369              :                     typedef ostreambuf_iterator<_CharT, _Traits> _Op;
     370              :                     _Ip __i(__sb);
     371              :                     _Ip __eof;
     372              :                     _Op __o(*this);
     373              :                     size_t __c = 0;
     374              :                     for (; __i != __eof; ++__i, ++__o, ++__c)
     375              :                     {
     376              :                         *__o = *__i;
     377              :                         if (__o.failed())
     378              :                             break;
     379              :                     }
     380              :                     if (__c == 0)
     381              :                         this->setstate(ios_base::failbit);
     382              : #ifndef _LIBCPP_NO_EXCEPTIONS
     383              :                 }
     384              :                 catch (...)
     385              :                 {
     386              :                     this->__set_failbit_and_consider_rethrow();
     387              :                 }
     388              : #endif // _LIBCPP_NO_EXCEPTIONS
     389              :             }
     390              :             else
     391              :                 this->setstate(ios_base::badbit);
     392              :         }
     393              : #ifndef _LIBCPP_NO_EXCEPTIONS
     394              :     }
     395              :     catch (...)
     396              :     {
     397              :         this->__set_badbit_and_consider_rethrow();
     398              :     }
     399              : #endif // _LIBCPP_NO_EXCEPTIONS
     400              :     return *this;
     401              : }
     402              : 
     403              : template <class _CharT, class _Traits>
     404              : basic_ostream<_CharT, _Traits>&
     405              : basic_ostream<_CharT, _Traits>::operator<<(bool __n)
     406              : {
     407              : #ifndef _LIBCPP_NO_EXCEPTIONS
     408              :     try
     409              :     {
     410              : #endif // _LIBCPP_NO_EXCEPTIONS
     411              :         sentry __s(*this);
     412              :         if (__s)
     413              :         {
     414              :             typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
     415              :             const _Fp& __f = std::use_facet<_Fp>(this->getloc());
     416              :             if (__f.put(*this, *this, this->fill(), __n).failed())
     417              :                 this->setstate(ios_base::badbit | ios_base::failbit);
     418              :         }
     419              : #ifndef _LIBCPP_NO_EXCEPTIONS
     420              :     }
     421              :     catch (...)
     422              :     {
     423              :         this->__set_badbit_and_consider_rethrow();
     424              :     }
     425              : #endif // _LIBCPP_NO_EXCEPTIONS
     426              :     return *this;
     427              : }
     428              : 
     429              : template <class _CharT, class _Traits>
     430              : basic_ostream<_CharT, _Traits>&
     431              : basic_ostream<_CharT, _Traits>::operator<<(short __n)
     432              : {
     433              : #ifndef _LIBCPP_NO_EXCEPTIONS
     434              :     try
     435              :     {
     436              : #endif // _LIBCPP_NO_EXCEPTIONS
     437              :         sentry __s(*this);
     438              :         if (__s)
     439              :         {
     440              :             ios_base::fmtflags __flags = ios_base::flags() & ios_base::basefield;
     441              :             typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
     442              :             const _Fp& __f = std::use_facet<_Fp>(this->getloc());
     443              :             if (__f.put(*this, *this, this->fill(),
     444              :                         __flags == ios_base::oct || __flags == ios_base::hex ?
     445              :                         static_cast<long>(static_cast<unsigned short>(__n))  :
     446              :                         static_cast<long>(__n)).failed())
     447              :                 this->setstate(ios_base::badbit | ios_base::failbit);
     448              :         }
     449              : #ifndef _LIBCPP_NO_EXCEPTIONS
     450              :     }
     451              :     catch (...)
     452              :     {
     453              :         this->__set_badbit_and_consider_rethrow();
     454              :     }
     455              : #endif // _LIBCPP_NO_EXCEPTIONS
     456              :     return *this;
     457              : }
     458              : 
     459              : template <class _CharT, class _Traits>
     460              : basic_ostream<_CharT, _Traits>&
     461              : basic_ostream<_CharT, _Traits>::operator<<(unsigned short __n)
     462              : {
     463              : #ifndef _LIBCPP_NO_EXCEPTIONS
     464              :     try
     465              :     {
     466              : #endif // _LIBCPP_NO_EXCEPTIONS
     467              :         sentry __s(*this);
     468              :         if (__s)
     469              :         {
     470              :             typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
     471              :             const _Fp& __f = std::use_facet<_Fp>(this->getloc());
     472              :             if (__f.put(*this, *this, this->fill(), static_cast<unsigned long>(__n)).failed())
     473              :                 this->setstate(ios_base::badbit | ios_base::failbit);
     474              :         }
     475              : #ifndef _LIBCPP_NO_EXCEPTIONS
     476              :     }
     477              :     catch (...)
     478              :     {
     479              :         this->__set_badbit_and_consider_rethrow();
     480              :     }
     481              : #endif // _LIBCPP_NO_EXCEPTIONS
     482              :     return *this;
     483              : }
     484              : 
     485              : template <class _CharT, class _Traits>
     486              : basic_ostream<_CharT, _Traits>&
     487              : basic_ostream<_CharT, _Traits>::operator<<(int __n)
     488              : {
     489              : #ifndef _LIBCPP_NO_EXCEPTIONS
     490              :     try
     491              :     {
     492              : #endif // _LIBCPP_NO_EXCEPTIONS
     493              :         sentry __s(*this);
     494              :         if (__s)
     495              :         {
     496              :             ios_base::fmtflags __flags = ios_base::flags() & ios_base::basefield;
     497              :             typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
     498              :             const _Fp& __f = std::use_facet<_Fp>(this->getloc());
     499              :             if (__f.put(*this, *this, this->fill(),
     500              :                         __flags == ios_base::oct || __flags == ios_base::hex ?
     501              :                         static_cast<long>(static_cast<unsigned int>(__n))  :
     502              :                         static_cast<long>(__n)).failed())
     503              :                 this->setstate(ios_base::badbit | ios_base::failbit);
     504              :         }
     505              : #ifndef _LIBCPP_NO_EXCEPTIONS
     506              :     }
     507              :     catch (...)
     508              :     {
     509              :         this->__set_badbit_and_consider_rethrow();
     510              :     }
     511              : #endif // _LIBCPP_NO_EXCEPTIONS
     512              :     return *this;
     513              : }
     514              : 
     515              : template <class _CharT, class _Traits>
     516              : basic_ostream<_CharT, _Traits>&
     517              : basic_ostream<_CharT, _Traits>::operator<<(unsigned int __n)
     518              : {
     519              : #ifndef _LIBCPP_NO_EXCEPTIONS
     520              :     try
     521              :     {
     522              : #endif // _LIBCPP_NO_EXCEPTIONS
     523              :         sentry __s(*this);
     524              :         if (__s)
     525              :         {
     526              :             typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
     527              :             const _Fp& __f = std::use_facet<_Fp>(this->getloc());
     528              :             if (__f.put(*this, *this, this->fill(), static_cast<unsigned long>(__n)).failed())
     529              :                 this->setstate(ios_base::badbit | ios_base::failbit);
     530              :         }
     531              : #ifndef _LIBCPP_NO_EXCEPTIONS
     532              :     }
     533              :     catch (...)
     534              :     {
     535              :         this->__set_badbit_and_consider_rethrow();
     536              :     }
     537              : #endif // _LIBCPP_NO_EXCEPTIONS
     538              :     return *this;
     539              : }
     540              : 
     541              : template <class _CharT, class _Traits>
     542              : basic_ostream<_CharT, _Traits>&
     543              : basic_ostream<_CharT, _Traits>::operator<<(long __n)
     544              : {
     545              : #ifndef _LIBCPP_NO_EXCEPTIONS
     546              :     try
     547              :     {
     548              : #endif // _LIBCPP_NO_EXCEPTIONS
     549              :         sentry __s(*this);
     550              :         if (__s)
     551              :         {
     552              :             typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
     553              :             const _Fp& __f = std::use_facet<_Fp>(this->getloc());
     554              :             if (__f.put(*this, *this, this->fill(), __n).failed())
     555              :                 this->setstate(ios_base::badbit | ios_base::failbit);
     556              :         }
     557              : #ifndef _LIBCPP_NO_EXCEPTIONS
     558              :     }
     559              :     catch (...)
     560              :     {
     561              :         this->__set_badbit_and_consider_rethrow();
     562              :     }
     563              : #endif // _LIBCPP_NO_EXCEPTIONS
     564              :     return *this;
     565              : }
     566              : 
     567              : template <class _CharT, class _Traits>
     568              : basic_ostream<_CharT, _Traits>&
     569              : basic_ostream<_CharT, _Traits>::operator<<(unsigned long __n)
     570              : {
     571              : #ifndef _LIBCPP_NO_EXCEPTIONS
     572              :     try
     573              :     {
     574              : #endif // _LIBCPP_NO_EXCEPTIONS
     575              :         sentry __s(*this);
     576              :         if (__s)
     577              :         {
     578              :             typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
     579              :             const _Fp& __f = std::use_facet<_Fp>(this->getloc());
     580              :             if (__f.put(*this, *this, this->fill(), __n).failed())
     581              :                 this->setstate(ios_base::badbit | ios_base::failbit);
     582              :         }
     583              : #ifndef _LIBCPP_NO_EXCEPTIONS
     584              :     }
     585              :     catch (...)
     586              :     {
     587              :         this->__set_badbit_and_consider_rethrow();
     588              :     }
     589              : #endif // _LIBCPP_NO_EXCEPTIONS
     590              :     return *this;
     591              : }
     592              : 
     593              : template <class _CharT, class _Traits>
     594              : basic_ostream<_CharT, _Traits>&
     595              : basic_ostream<_CharT, _Traits>::operator<<(long long __n)
     596              : {
     597              : #ifndef _LIBCPP_NO_EXCEPTIONS
     598              :     try
     599              :     {
     600              : #endif // _LIBCPP_NO_EXCEPTIONS
     601              :         sentry __s(*this);
     602              :         if (__s)
     603              :         {
     604              :             typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
     605              :             const _Fp& __f = std::use_facet<_Fp>(this->getloc());
     606              :             if (__f.put(*this, *this, this->fill(), __n).failed())
     607              :                 this->setstate(ios_base::badbit | ios_base::failbit);
     608              :         }
     609              : #ifndef _LIBCPP_NO_EXCEPTIONS
     610              :     }
     611              :     catch (...)
     612              :     {
     613              :         this->__set_badbit_and_consider_rethrow();
     614              :     }
     615              : #endif // _LIBCPP_NO_EXCEPTIONS
     616              :     return *this;
     617              : }
     618              : 
     619              : template <class _CharT, class _Traits>
     620              : basic_ostream<_CharT, _Traits>&
     621              : basic_ostream<_CharT, _Traits>::operator<<(unsigned long long __n)
     622              : {
     623              : #ifndef _LIBCPP_NO_EXCEPTIONS
     624              :     try
     625              :     {
     626              : #endif // _LIBCPP_NO_EXCEPTIONS
     627              :         sentry __s(*this);
     628              :         if (__s)
     629              :         {
     630              :             typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
     631              :             const _Fp& __f = std::use_facet<_Fp>(this->getloc());
     632              :             if (__f.put(*this, *this, this->fill(), __n).failed())
     633              :                 this->setstate(ios_base::badbit | ios_base::failbit);
     634              :         }
     635              : #ifndef _LIBCPP_NO_EXCEPTIONS
     636              :     }
     637              :     catch (...)
     638              :     {
     639              :         this->__set_badbit_and_consider_rethrow();
     640              :     }
     641              : #endif // _LIBCPP_NO_EXCEPTIONS
     642              :     return *this;
     643              : }
     644              : 
     645              : template <class _CharT, class _Traits>
     646              : basic_ostream<_CharT, _Traits>&
     647              : basic_ostream<_CharT, _Traits>::operator<<(float __n)
     648              : {
     649              : #ifndef _LIBCPP_NO_EXCEPTIONS
     650              :     try
     651              :     {
     652              : #endif // _LIBCPP_NO_EXCEPTIONS
     653              :         sentry __s(*this);
     654              :         if (__s)
     655              :         {
     656              :             typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
     657              :             const _Fp& __f = std::use_facet<_Fp>(this->getloc());
     658              :             if (__f.put(*this, *this, this->fill(), static_cast<double>(__n)).failed())
     659              :                 this->setstate(ios_base::badbit | ios_base::failbit);
     660              :         }
     661              : #ifndef _LIBCPP_NO_EXCEPTIONS
     662              :     }
     663              :     catch (...)
     664              :     {
     665              :         this->__set_badbit_and_consider_rethrow();
     666              :     }
     667              : #endif // _LIBCPP_NO_EXCEPTIONS
     668              :     return *this;
     669              : }
     670              : 
     671              : template <class _CharT, class _Traits>
     672              : basic_ostream<_CharT, _Traits>&
     673              : basic_ostream<_CharT, _Traits>::operator<<(double __n)
     674              : {
     675              : #ifndef _LIBCPP_NO_EXCEPTIONS
     676              :     try
     677              :     {
     678              : #endif // _LIBCPP_NO_EXCEPTIONS
     679              :         sentry __s(*this);
     680              :         if (__s)
     681              :         {
     682              :             typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
     683              :             const _Fp& __f = std::use_facet<_Fp>(this->getloc());
     684              :             if (__f.put(*this, *this, this->fill(), __n).failed())
     685              :                 this->setstate(ios_base::badbit | ios_base::failbit);
     686              :         }
     687              : #ifndef _LIBCPP_NO_EXCEPTIONS
     688              :     }
     689              :     catch (...)
     690              :     {
     691              :         this->__set_badbit_and_consider_rethrow();
     692              :     }
     693              : #endif // _LIBCPP_NO_EXCEPTIONS
     694              :     return *this;
     695              : }
     696              : 
     697              : template <class _CharT, class _Traits>
     698              : basic_ostream<_CharT, _Traits>&
     699              : basic_ostream<_CharT, _Traits>::operator<<(long double __n)
     700              : {
     701              : #ifndef _LIBCPP_NO_EXCEPTIONS
     702              :     try
     703              :     {
     704              : #endif // _LIBCPP_NO_EXCEPTIONS
     705              :         sentry __s(*this);
     706              :         if (__s)
     707              :         {
     708              :             typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
     709              :             const _Fp& __f = std::use_facet<_Fp>(this->getloc());
     710              :             if (__f.put(*this, *this, this->fill(), __n).failed())
     711              :                 this->setstate(ios_base::badbit | ios_base::failbit);
     712              :         }
     713              : #ifndef _LIBCPP_NO_EXCEPTIONS
     714              :     }
     715              :     catch (...)
     716              :     {
     717              :         this->__set_badbit_and_consider_rethrow();
     718              :     }
     719              : #endif // _LIBCPP_NO_EXCEPTIONS
     720              :     return *this;
     721              : }
     722              : 
     723              : template <class _CharT, class _Traits>
     724              : basic_ostream<_CharT, _Traits>&
     725              : basic_ostream<_CharT, _Traits>::operator<<(const void* __n)
     726              : {
     727              : #ifndef _LIBCPP_NO_EXCEPTIONS
     728              :     try
     729              :     {
     730              : #endif // _LIBCPP_NO_EXCEPTIONS
     731              :         sentry __s(*this);
     732              :         if (__s)
     733              :         {
     734              :             typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp;
     735              :             const _Fp& __f = std::use_facet<_Fp>(this->getloc());
     736              :             if (__f.put(*this, *this, this->fill(), __n).failed())
     737              :                 this->setstate(ios_base::badbit | ios_base::failbit);
     738              :         }
     739              : #ifndef _LIBCPP_NO_EXCEPTIONS
     740              :     }
     741              :     catch (...)
     742              :     {
     743              :         this->__set_badbit_and_consider_rethrow();
     744              :     }
     745              : #endif // _LIBCPP_NO_EXCEPTIONS
     746              :     return *this;
     747              : }
     748              : 
     749              : template<class _CharT, class _Traits>
     750              : _LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>&
     751          124 : __put_character_sequence(basic_ostream<_CharT, _Traits>& __os,
     752              :                           const _CharT* __str, size_t __len)
     753              : {
     754              : #ifndef _LIBCPP_NO_EXCEPTIONS
     755              :     try
     756              :     {
     757              : #endif // _LIBCPP_NO_EXCEPTIONS
     758          124 :         typename basic_ostream<_CharT, _Traits>::sentry __s(__os);
     759          124 :         if (__s)
     760              :         {
     761              :             typedef ostreambuf_iterator<_CharT, _Traits> _Ip;
     762          248 :             if (std::__pad_and_output(_Ip(__os),
     763          124 :                                       __str,
     764          124 :                                       (__os.flags() & ios_base::adjustfield) == ios_base::left ?
     765            0 :                                           __str + __len :
     766          124 :                                           __str,
     767          124 :                                       __str + __len,
     768          124 :                                       __os,
     769          248 :                                       __os.fill()).failed())
     770            0 :                 __os.setstate(ios_base::badbit | ios_base::failbit);
     771          124 :         }
     772              : #ifndef _LIBCPP_NO_EXCEPTIONS
     773          124 :     }
     774              :     catch (...)
     775              :     {
     776            0 :         __os.__set_badbit_and_consider_rethrow();
     777            0 :     }
     778              : #endif // _LIBCPP_NO_EXCEPTIONS
     779          124 :     return __os;
     780            0 : }
     781              : 
     782              : 
     783              : template<class _CharT, class _Traits>
     784              : _LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>&
     785              : operator<<(basic_ostream<_CharT, _Traits>& __os, _CharT __c)
     786              : {
     787              :     return _VSTD::__put_character_sequence(__os, &__c, 1);
     788              : }
     789              : 
     790              : template<class _CharT, class _Traits>
     791              : _LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>&
     792              : operator<<(basic_ostream<_CharT, _Traits>& __os, char __cn)
     793              : {
     794              : #ifndef _LIBCPP_NO_EXCEPTIONS
     795              :     try
     796              :     {
     797              : #endif // _LIBCPP_NO_EXCEPTIONS
     798              :         typename basic_ostream<_CharT, _Traits>::sentry __s(__os);
     799              :         if (__s)
     800              :         {
     801              :             _CharT __c = __os.widen(__cn);
     802              :             typedef ostreambuf_iterator<_CharT, _Traits> _Ip;
     803              :             if (std::__pad_and_output(_Ip(__os),
     804              :                                       &__c,
     805              :                                       (__os.flags() & ios_base::adjustfield) == ios_base::left ?
     806              :                                           &__c + 1 :
     807              :                                           &__c,
     808              :                                       &__c + 1,
     809              :                                       __os,
     810              :                                       __os.fill()).failed())
     811              :                 __os.setstate(ios_base::badbit | ios_base::failbit);
     812              :         }
     813              : #ifndef _LIBCPP_NO_EXCEPTIONS
     814              :     }
     815              :     catch (...)
     816              :     {
     817              :         __os.__set_badbit_and_consider_rethrow();
     818              :     }
     819              : #endif // _LIBCPP_NO_EXCEPTIONS
     820              :     return __os;
     821              : }
     822              : 
     823              : template<class _Traits>
     824              : _LIBCPP_HIDE_FROM_ABI basic_ostream<char, _Traits>&
     825              : operator<<(basic_ostream<char, _Traits>& __os, char __c)
     826              : {
     827              :     return _VSTD::__put_character_sequence(__os, &__c, 1);
     828              : }
     829              : 
     830              : template<class _Traits>
     831              : _LIBCPP_HIDE_FROM_ABI basic_ostream<char, _Traits>&
     832              : operator<<(basic_ostream<char, _Traits>& __os, signed char __c)
     833              : {
     834              :     return _VSTD::__put_character_sequence(__os, (char *) &__c, 1);
     835              : }
     836              : 
     837              : template<class _Traits>
     838              : _LIBCPP_HIDE_FROM_ABI basic_ostream<char, _Traits>&
     839              : operator<<(basic_ostream<char, _Traits>& __os, unsigned char __c)
     840              : {
     841              :     return _VSTD::__put_character_sequence(__os, (char *) &__c, 1);
     842              : }
     843              : 
     844              : template<class _CharT, class _Traits>
     845              : _LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>&
     846              : operator<<(basic_ostream<_CharT, _Traits>& __os, const _CharT* __str)
     847              : {
     848              :     return _VSTD::__put_character_sequence(__os, __str, _Traits::length(__str));
     849              : }
     850              : 
     851              : template<class _CharT, class _Traits>
     852              : _LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>&
     853              : operator<<(basic_ostream<_CharT, _Traits>& __os, const char* __strn)
     854              : {
     855              : #ifndef _LIBCPP_NO_EXCEPTIONS
     856              :     try
     857              :     {
     858              : #endif // _LIBCPP_NO_EXCEPTIONS
     859              :         typename basic_ostream<_CharT, _Traits>::sentry __s(__os);
     860              :         if (__s)
     861              :         {
     862              :             typedef ostreambuf_iterator<_CharT, _Traits> _Ip;
     863              :             size_t __len = char_traits<char>::length(__strn);
     864              :             const int __bs = 100;
     865              :             _CharT __wbb[__bs];
     866              :             _CharT* __wb = __wbb;
     867              :             unique_ptr<_CharT, void(*)(void*)> __h(0, free);
     868              :             if (__len > __bs)
     869              :             {
     870              :                 __wb = (_CharT*)malloc(__len*sizeof(_CharT));
     871              :                 if (__wb == 0)
     872              :                     __throw_bad_alloc();
     873              :                 __h.reset(__wb);
     874              :             }
     875              :             for (_CharT* __p = __wb; *__strn != '\0'; ++__strn, ++__p)
     876              :                 *__p = __os.widen(*__strn);
     877              :             if (std::__pad_and_output(_Ip(__os),
     878              :                                       __wb,
     879              :                                       (__os.flags() & ios_base::adjustfield) == ios_base::left ?
     880              :                                           __wb + __len :
     881              :                                           __wb,
     882              :                                       __wb + __len,
     883              :                                       __os,
     884              :                                       __os.fill()).failed())
     885              :                 __os.setstate(ios_base::badbit | ios_base::failbit);
     886              :         }
     887              : #ifndef _LIBCPP_NO_EXCEPTIONS
     888              :     }
     889              :     catch (...)
     890              :     {
     891              :         __os.__set_badbit_and_consider_rethrow();
     892              :     }
     893              : #endif // _LIBCPP_NO_EXCEPTIONS
     894              :     return __os;
     895              : }
     896              : 
     897              : template<class _Traits>
     898              : _LIBCPP_HIDE_FROM_ABI basic_ostream<char, _Traits>&
     899           65 : operator<<(basic_ostream<char, _Traits>& __os, const char* __str)
     900              : {
     901           65 :     return _VSTD::__put_character_sequence(__os, __str, _Traits::length(__str));
     902              : }
     903              : 
     904              : template<class _Traits>
     905              : _LIBCPP_HIDE_FROM_ABI basic_ostream<char, _Traits>&
     906              : operator<<(basic_ostream<char, _Traits>& __os, const signed char* __str)
     907              : {
     908              :     const char *__s = (const char *) __str;
     909              :     return _VSTD::__put_character_sequence(__os, __s, _Traits::length(__s));
     910              : }
     911              : 
     912              : template<class _Traits>
     913              : _LIBCPP_HIDE_FROM_ABI basic_ostream<char, _Traits>&
     914              : operator<<(basic_ostream<char, _Traits>& __os, const unsigned char* __str)
     915              : {
     916              :     const char *__s = (const char *) __str;
     917              :     return _VSTD::__put_character_sequence(__os, __s, _Traits::length(__s));
     918              : }
     919              : 
     920              : template <class _CharT, class _Traits>
     921              : basic_ostream<_CharT, _Traits>&
     922              : basic_ostream<_CharT, _Traits>::put(char_type __c)
     923              : {
     924              : #ifndef _LIBCPP_NO_EXCEPTIONS
     925              :     try
     926              :     {
     927              : #endif // _LIBCPP_NO_EXCEPTIONS
     928              :         sentry __s(*this);
     929              :         if (__s)
     930              :         {
     931              :             typedef ostreambuf_iterator<_CharT, _Traits> _Op;
     932              :             _Op __o(*this);
     933              :             *__o = __c;
     934              :             if (__o.failed())
     935              :                 this->setstate(ios_base::badbit);
     936              :         }
     937              : #ifndef _LIBCPP_NO_EXCEPTIONS
     938              :     }
     939              :     catch (...)
     940              :     {
     941              :         this->__set_badbit_and_consider_rethrow();
     942              :     }
     943              : #endif // _LIBCPP_NO_EXCEPTIONS
     944              :     return *this;
     945              : }
     946              : 
     947              : template <class _CharT, class _Traits>
     948              : basic_ostream<_CharT, _Traits>&
     949              : basic_ostream<_CharT, _Traits>::write(const char_type* __s, streamsize __n)
     950              : {
     951              : #ifndef _LIBCPP_NO_EXCEPTIONS
     952              :     try
     953              :     {
     954              : #endif // _LIBCPP_NO_EXCEPTIONS
     955              :         sentry __sen(*this);
     956              :         if (__sen && __n)
     957              :         {
     958              :             if (this->rdbuf()->sputn(__s, __n) != __n)
     959              :                 this->setstate(ios_base::badbit);
     960              :         }
     961              : #ifndef _LIBCPP_NO_EXCEPTIONS
     962              :     }
     963              :     catch (...)
     964              :     {
     965              :         this->__set_badbit_and_consider_rethrow();
     966              :     }
     967              : #endif // _LIBCPP_NO_EXCEPTIONS
     968              :     return *this;
     969              : }
     970              : 
     971              : template <class _CharT, class _Traits>
     972              : basic_ostream<_CharT, _Traits>&
     973              : basic_ostream<_CharT, _Traits>::flush()
     974              : {
     975              : #ifndef _LIBCPP_NO_EXCEPTIONS
     976              :     try
     977              :     {
     978              : #endif // _LIBCPP_NO_EXCEPTIONS
     979              :         if (this->rdbuf())
     980              :         {
     981              :             sentry __s(*this);
     982              :             if (__s)
     983              :             {
     984              :                 if (this->rdbuf()->pubsync() == -1)
     985              :                     this->setstate(ios_base::badbit);
     986              :             }
     987              :         }
     988              : #ifndef _LIBCPP_NO_EXCEPTIONS
     989              :     }
     990              :     catch (...)
     991              :     {
     992              :         this->__set_badbit_and_consider_rethrow();
     993              :     }
     994              : #endif // _LIBCPP_NO_EXCEPTIONS
     995              :     return *this;
     996              : }
     997              : 
     998              : template <class _CharT, class _Traits>
     999              : typename basic_ostream<_CharT, _Traits>::pos_type
    1000              : basic_ostream<_CharT, _Traits>::tellp()
    1001              : {
    1002              :     if (this->fail())
    1003              :         return pos_type(-1);
    1004              :     return this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out);
    1005              : }
    1006              : 
    1007              : template <class _CharT, class _Traits>
    1008              : basic_ostream<_CharT, _Traits>&
    1009              : basic_ostream<_CharT, _Traits>::seekp(pos_type __pos)
    1010              : {
    1011              :     sentry __s(*this);
    1012              :     if (!this->fail())
    1013              :     {
    1014              :         if (this->rdbuf()->pubseekpos(__pos, ios_base::out) == pos_type(-1))
    1015              :             this->setstate(ios_base::failbit);
    1016              :     }
    1017              :     return *this;
    1018              : }
    1019              : 
    1020              : template <class _CharT, class _Traits>
    1021              : basic_ostream<_CharT, _Traits>&
    1022              : basic_ostream<_CharT, _Traits>::seekp(off_type __off, ios_base::seekdir __dir)
    1023              : {
    1024              :     sentry __s(*this);
    1025              :     if (!this->fail())
    1026              :     {
    1027              :         if (this->rdbuf()->pubseekoff(__off, __dir, ios_base::out) == pos_type(-1))
    1028              :             this->setstate(ios_base::failbit);
    1029              :     }
    1030              :     return *this;
    1031              : }
    1032              : 
    1033              : template <class _CharT, class _Traits>
    1034              : _LIBCPP_HIDE_FROM_ABI inline
    1035              : basic_ostream<_CharT, _Traits>&
    1036           68 : endl(basic_ostream<_CharT, _Traits>& __os)
    1037              : {
    1038           68 :     __os.put(__os.widen('\n'));
    1039           68 :     __os.flush();
    1040           68 :     return __os;
    1041              : }
    1042              : 
    1043              : template <class _CharT, class _Traits>
    1044              : _LIBCPP_HIDE_FROM_ABI inline
    1045              : basic_ostream<_CharT, _Traits>&
    1046              : ends(basic_ostream<_CharT, _Traits>& __os)
    1047              : {
    1048              :     __os.put(_CharT());
    1049              :     return __os;
    1050              : }
    1051              : 
    1052              : template <class _CharT, class _Traits>
    1053              : _LIBCPP_HIDE_FROM_ABI inline
    1054              : basic_ostream<_CharT, _Traits>&
    1055              : flush(basic_ostream<_CharT, _Traits>& __os)
    1056              : {
    1057              :     __os.flush();
    1058              :     return __os;
    1059              : }
    1060              : 
    1061              : template <class _Stream, class _Tp, class = void>
    1062              : struct __is_ostreamable : false_type { };
    1063              : 
    1064              : template <class _Stream, class _Tp>
    1065              : struct __is_ostreamable<_Stream, _Tp, decltype(
    1066              :     std::declval<_Stream>() << std::declval<_Tp>(), void()
    1067              : )> : true_type { };
    1068              : 
    1069              : template <class _Stream, class _Tp, class = typename enable_if<
    1070              :     _And<is_base_of<ios_base, _Stream>,
    1071              :          __is_ostreamable<_Stream&, const _Tp&> >::value
    1072              : >::type>
    1073              : _LIBCPP_INLINE_VISIBILITY
    1074              : _Stream&& operator<<(_Stream&& __os, const _Tp& __x)
    1075              : {
    1076              :     __os << __x;
    1077              :     return _VSTD::move(__os);
    1078              : }
    1079              : 
    1080              : template<class _CharT, class _Traits, class _Allocator>
    1081              : basic_ostream<_CharT, _Traits>&
    1082           59 : operator<<(basic_ostream<_CharT, _Traits>& __os,
    1083              :            const basic_string<_CharT, _Traits, _Allocator>& __str)
    1084              : {
    1085           59 :     return _VSTD::__put_character_sequence(__os, __str.data(), __str.size());
    1086              : }
    1087              : 
    1088              : template<class _CharT, class _Traits>
    1089              : _LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>&
    1090              : operator<<(basic_ostream<_CharT, _Traits>& __os,
    1091              :            basic_string_view<_CharT, _Traits> __sv)
    1092              : {
    1093              :     return _VSTD::__put_character_sequence(__os, __sv.data(), __sv.size());
    1094              : }
    1095              : 
    1096              : template <class _CharT, class _Traits>
    1097              : inline _LIBCPP_INLINE_VISIBILITY
    1098              : basic_ostream<_CharT, _Traits>&
    1099              : operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __ec)
    1100              : {
    1101              :     return __os << __ec.category().name() << ':' << __ec.value();
    1102              : }
    1103              : 
    1104              : template<class _CharT, class _Traits, class _Yp>
    1105              : inline _LIBCPP_INLINE_VISIBILITY
    1106              : basic_ostream<_CharT, _Traits>&
    1107              : operator<<(basic_ostream<_CharT, _Traits>& __os, shared_ptr<_Yp> const& __p)
    1108              : {
    1109              :     return __os << __p.get();
    1110              : }
    1111              : 
    1112              : template<class _CharT, class _Traits, class _Yp, class _Dp>
    1113              : inline _LIBCPP_INLINE_VISIBILITY
    1114              : typename enable_if
    1115              : <
    1116              :     is_same<void, __void_t<decltype((std::declval<basic_ostream<_CharT, _Traits>&>() << std::declval<typename unique_ptr<_Yp, _Dp>::pointer>()))> >::value,
    1117              :     basic_ostream<_CharT, _Traits>&
    1118              : >::type
    1119              : operator<<(basic_ostream<_CharT, _Traits>& __os, unique_ptr<_Yp, _Dp> const& __p)
    1120              : {
    1121              :     return __os << __p.get();
    1122              : }
    1123              : 
    1124              : template <class _CharT, class _Traits, size_t _Size>
    1125              : _LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>&
    1126              : operator<<(basic_ostream<_CharT, _Traits>& __os, const bitset<_Size>& __x)
    1127              : {
    1128              :     return __os << __x.template to_string<_CharT, _Traits>
    1129              :                         (std::use_facet<ctype<_CharT> >(__os.getloc()).widen('0'),
    1130              :                          std::use_facet<ctype<_CharT> >(__os.getloc()).widen('1'));
    1131              : }
    1132              : 
    1133              : #if _LIBCPP_STD_VER > 17
    1134              : 
    1135              : #ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
    1136              : template <class _Traits>
    1137              : basic_ostream<char, _Traits>& operator<<(basic_ostream<char, _Traits>&, wchar_t) = delete;
    1138              : 
    1139              : template <class _Traits>
    1140              : basic_ostream<char, _Traits>& operator<<(basic_ostream<char, _Traits>&, const wchar_t*) = delete;
    1141              : 
    1142              : template <class _Traits>
    1143              : basic_ostream<wchar_t, _Traits>& operator<<(basic_ostream<wchar_t, _Traits>&, char16_t) = delete;
    1144              : 
    1145              : template <class _Traits>
    1146              : basic_ostream<wchar_t, _Traits>& operator<<(basic_ostream<wchar_t, _Traits>&, char32_t) = delete;
    1147              : 
    1148              : template <class _Traits>
    1149              : basic_ostream<wchar_t, _Traits>& operator<<(basic_ostream<wchar_t, _Traits>&, const char16_t*) = delete;
    1150              : 
    1151              : template <class _Traits>
    1152              : basic_ostream<wchar_t, _Traits>& operator<<(basic_ostream<wchar_t, _Traits>&, const char32_t*) = delete;
    1153              : 
    1154              : #endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS
    1155              : 
    1156              : #ifndef _LIBCPP_HAS_NO_CHAR8_T
    1157              : template <class _Traits>
    1158              : basic_ostream<char, _Traits>& operator<<(basic_ostream<char, _Traits>&, char8_t) = delete;
    1159              : 
    1160              : template <class _Traits>
    1161              : basic_ostream<wchar_t, _Traits>& operator<<(basic_ostream<wchar_t, _Traits>&, char8_t) = delete;
    1162              : 
    1163              : template <class _Traits>
    1164              : basic_ostream<char, _Traits>& operator<<(basic_ostream<char, _Traits>&, const char8_t*) = delete;
    1165              : 
    1166              : template <class _Traits>
    1167              : basic_ostream<wchar_t, _Traits>& operator<<(basic_ostream<wchar_t, _Traits>&, const char8_t*) = delete;
    1168              : #endif
    1169              : 
    1170              : template <class _Traits>
    1171              : basic_ostream<char, _Traits>& operator<<(basic_ostream<char, _Traits>&, char16_t) = delete;
    1172              : 
    1173              : template <class _Traits>
    1174              : basic_ostream<char, _Traits>& operator<<(basic_ostream<char, _Traits>&, char32_t) = delete;
    1175              : 
    1176              : template <class _Traits>
    1177              : basic_ostream<char, _Traits>& operator<<(basic_ostream<char, _Traits>&, const char16_t*) = delete;
    1178              : 
    1179              : template <class _Traits>
    1180              : basic_ostream<char, _Traits>& operator<<(basic_ostream<char, _Traits>&, const char32_t*) = delete;
    1181              : 
    1182              : #endif // _LIBCPP_STD_VER > 17
    1183              : 
    1184              : extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream<char>;
    1185              : #ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
    1186              : extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream<wchar_t>;
    1187              : #endif
    1188              : 
    1189              : _LIBCPP_END_NAMESPACE_STD
    1190              : 
    1191              : #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
    1192              : #  include <concepts>
    1193              : #  include <iterator>
    1194              : #  include <type_traits>
    1195              : #endif
    1196              : 
    1197              : #endif // _LIBCPP_OSTREAM
        

Generated by: LCOV version 2.0-1