Standard C++ Library Reference ISO/IEC (VERSION3)
 explicit basic_ostream(basic_streambuf<Elem, Tr> *strbuf);
 class sentry;
 virtual ~ostream();
 basic_ostream& operator<<(
 basic_ostream& (*pfn)(basic_ostream&));
 basic_ostream& operator<<(
 ios_base;& (*pfn)(ios_base&));
 basic_ostream& operator<<(
 basic_ios<Elem, Tr>& (*pfn)(basic_ios<Elem, Tr>&));
 basic_ostream& operator<<(
 basic_streambuf<Elem, Tr> *strbuf);
 basic_ostream& operator<<(bool val);
 basic_ostream& operator<<(short val);
 basic_ostream& operator<<(unsigned short val);
 basic_ostream& operator<<(int val);
 basic_ostream& operator<<(unsigned int val);
 basic_ostream& operator<<(long val);
 basic_ostream& operator<<(unsigned long val);
 basic_ostream& operator<<(float val);
 basic_ostream& operator<<(double val);
 basic_ostream& operator<<(long double val);
 basic_ostream& operator<<(const void *val);
 basic_ostream& put(char_type ch);
 basic_ostream& write(char_type *str, streamsize count);
 basic_ostream& flush();
 pos_type tellp();
 basic_ostream& seekp(pos_type pos);
 basic_ostream& seekp(off_type off,
 ios_base::seek_dir way);
 };
The template class describes an object that controls insertion of elements and encoded objects into
a stream buffer with elements of type Elem, also known as char_type, whose character traits
are determined by the class Tr, also known as traits_type.
Most of the member functions that overload operator<< are formatted output functions.
They follow the pattern:
 iostate state = goodbit;
 const sentry ok(*this);
 if (ok)
 {try
 {<convert and insert elements
 accumulate flags in state> }










