Default template arguments are described as appearing both in
<iosfwd>
and in the synopsis of other headers
but it is well-formed to include both
<iosfwd>
and one or more of the other headers.238
It is the implementation's
responsibility to implement headers so
that including <iosfwd>
and other headers does not violate the rules about
multiple occurrences of default arguments.
The
class template specialization
basic_ios<charT, traits>
serves as a virtual base class for the
class templates
basic_istream,
basic_ostream,
and
class templates
derived from them.
basic_iostream
is a class
template
derived from both
basic_istream<charT, traits>
and
basic_ostream<charT, traits>.
The
class template specialization
basic_streambuf<charT, traits>
serves as a base class for class templates
basic_stringbuf,
basic_filebuf,
basic_syncbuf,
and
basic_spanbuf.
The
class template specialization
basic_istream<charT, traits>
serves as a base class for class templates
basic_istringstream,
basic_ifstream,
and
basic_ispanstream.
The
class template specialization
basic_ostream<charT, traits>
serves as a base class for class templates
basic_ostringstream,
basic_ofstream,
basic_osyncstream,
and
basic_ospanstream.
The
class template specialization
basic_iostream<charT, traits>
serves as a base class for class templates
basic_stringstream,
basic_fstream,
and
basic_spanstream.