This header is part of theInput/Output library.
Includes | ||
std::basic_ostream,std::basic_iostream class templates and typedefs[edit] | ||
Classes | ||
(C++20) | synchronized output device wrapper (class template)[edit] | |
(C++20) | synchronized output stream wrapper (class template)[edit] | |
syncbuf (C++20) | std::basic_syncbuf<char> (typedef) | |
wsyncbuf (C++20) | std::basic_syncbuf<wchar_t> (typedef) | |
osyncstream (C++20) | std::basic_osyncstream<char> (typedef) | |
wosyncstream (C++20) | std::basic_osyncstream<wchar_t> (typedef) | |
Functions | ||
specializes thestd::swap algorithm (function template)[edit] |
#include <ostream> namespace std{template<class CharT,class Traits= char_traits<CharT>,class Allocator= allocator<CharT>>class basic_syncbuf; using syncbuf= basic_syncbuf<char>;using wsyncbuf= basic_syncbuf<wchar_t>; template<class CharT,class Traits= char_traits<CharT>,class Allocator= allocator<CharT>>class basic_osyncstream; using osyncstream= basic_osyncstream<char>;using wosyncstream= basic_osyncstream<wchar_t>;}
namespace std{template<class CharT,class Traits= char_traits<CharT>,class Allocator= allocator<CharT>>class basic_syncbuf:public basic_streambuf<CharT, Traits>{public:using char_type= CharT;using int_type=typename Traits::int_type;using pos_type=typename Traits::pos_type;using off_type=typename Traits::off_type;using traits_type= Traits;using allocator_type= Allocator; using streambuf_type= basic_streambuf<CharT, Traits>; // construction and destruction basic_syncbuf(): basic_syncbuf(nullptr){}explicit basic_syncbuf(streambuf_type* obuf): basic_syncbuf(obuf, Allocator()){} basic_syncbuf(streambuf_type*,const Allocator&); basic_syncbuf(basic_syncbuf&&); ~basic_syncbuf(); // assignment and swap basic_syncbuf& operator=(basic_syncbuf&&);void swap(basic_syncbuf&); // member functionsbool emit(); streambuf_type* get_wrapped()constnoexcept; allocator_type get_allocator()constnoexcept;void set_emit_on_sync(bool)noexcept; protected:// overridden virtual functionsint sync() override; private: streambuf_type* wrapped;// exposition onlybool emit_on_sync{};// exposition only}; // specialized algorithmstemplate<class CharT,class Traits,class Allocator>void swap(basic_syncbuf<CharT, Traits, Allocator>&, basic_syncbuf<CharT, Traits, Allocator>&);}
namespace std{template<class CharT,class Traits= char_traits<CharT>,class Allocator= allocator<CharT>>class basic_osyncstream:public basic_ostream<CharT, Traits>{public:using char_type= CharT;using int_type=typename Traits::int_type;using pos_type=typename Traits::pos_type;using off_type=typename Traits::off_type;using traits_type= Traits; using allocator_type= Allocator;using streambuf_type= basic_streambuf<CharT, Traits>;using syncbuf_type= basic_syncbuf<CharT, Traits, Allocator>; // construction and destruction basic_osyncstream(streambuf_type*,const Allocator&);explicit basic_osyncstream(streambuf_type* obuf): basic_osyncstream(obuf, Allocator()){} basic_osyncstream(basic_ostream<CharT, Traits>& os,const Allocator& allocator): basic_osyncstream(os.rdbuf(), allocator){}explicit basic_osyncstream(basic_ostream<CharT, Traits>& os): basic_osyncstream(os, Allocator()){} basic_osyncstream(basic_osyncstream&&)noexcept; ~basic_osyncstream(); // assignment basic_osyncstream& operator=(basic_osyncstream&&)noexcept; // member functionsvoid emit(); streambuf_type* get_wrapped()constnoexcept; syncbuf_type* rdbuf()constnoexcept{returnconst_cast<syncbuf_type*>(addressof(sb));} private: syncbuf_type sb;// exposition only};}