The em(protected) members of the class tt(streambuf) are important for
understanding and using tt(streambuf) objects. Although there are both
protected hi(data member)data members and protected member functions
    hi(member function) defined in the tt(class streambuf) the protected
em(data) members are not mentioned here as using them would violate the
principle of emi(data hiding). As tt(streambuf)'s set of member functions is
quite extensive, it is hardly ever necessary to use its data members
directly. The following subsections do not even list all protected member
functions but only those are covered that are useful for constructing
specializations.

tt(Streambuf) objects control a buffer, used for input and/or output, for
which begin-, actual- and end-pointers have been defined, as depicted in
figure ref(SBBUFFERS).
    figure(iostreams/sbbuffers)
    (Input- and output buffer pointers of the class `streambuf')
    (SBBUFFERS)

tt(Streambuf) offers two protected constructors:
    itemization(
    ittq(streambuf::streambuf())
        (Default (protected) constructor of the tt(class streambuf).)
    ittq(streambuf::streambuf(streambuf const &rhs))
        ((Protected) copy constructor of the tt(class streambuf). Note that
this copy constructor merely copies the values of the data members of tt(rhs):
after using the copy constructor both tt(streambuf) objects refer to the same
data buffer and initially their pointers point at identical positions. Also
note that these are em(not) shared pointers, but only `raw copies'.)
    )
