namespace std {
  template<class charT, class traits = char_traits<charT>>
  class basic_iostream
    : public basic_istream<charT, traits>,
      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;
        explicit basic_iostream(basic_streambuf<charT, traits>* sb);
        virtual ~basic_iostream();
  protected:
        basic_iostream(const basic_iostream& rhs) = delete;
    basic_iostream(basic_iostream&& rhs);
        basic_iostream& operator=(const basic_iostream& rhs) = delete;
    basic_iostream& operator=(basic_iostream&& rhs);
    void swap(basic_iostream& rhs);
  };
}The class template
basic_iostream
inherits a number of functions that allow reading input and writing output to
sequences controlled by a stream buffer
.explicit basic_iostream(basic_streambuf<charT, traits>* sb);
Ensures: 
rdbuf() == sb
and
gcount() == 0. basic_iostream(basic_iostream&& rhs);
Effects: Move constructs from the rvalue 
rhs by
constructing the 
basic_istream base class with
move(rhs). virtual ~basic_iostream();
Effects: 
Destroys an object of class
basic_iostream. Remarks: 
Does not perform any operations on
rdbuf(). basic_iostream& operator=(basic_iostream&& rhs);
Effects: As if by 
swap(rhs). void swap(basic_iostream& rhs);
Effects: Calls 
basic_istream<charT, traits>::swap(rhs).