[iosfwd.syn] # 31 Input/output library [[input.output]](./#input.output) ## 31.3 Forward declarations [[iostream.forward]](iostream.forward#iosfwd.syn) ### 31.3.1 Header synopsis [iosfwd.syn] [🔗](#header:%3ciosfwd%3e) namespace std {template struct char_traits; template<> struct char_traits; template<> struct char_traits; template<> struct char_traits; template<> struct char_traits; template<> struct char_traits; template class allocator; template>class basic_ios; template>class basic_streambuf; template>class basic_istream; template>class basic_ostream; template>class basic_iostream; template, class Allocator = allocator>class basic_stringbuf; template, class Allocator = allocator>class basic_istringstream; template, class Allocator = allocator>class basic_ostringstream; template, class Allocator = allocator>class basic_stringstream; template>class basic_spanbuf; template>class basic_ispanstream; template>class basic_ospanstream; template>class basic_spanstream; template>class basic_filebuf; template>class basic_ifstream; template>class basic_ofstream; template>class basic_fstream; template, class Allocator = allocator>class basic_syncbuf; template, class Allocator = allocator>class basic_osyncstream; template>class istreambuf_iterator; template>class ostreambuf_iterator; using ios = basic_ios; using wios = basic_ios; using streambuf = basic_streambuf; using istream = basic_istream; using ostream = basic_ostream; using iostream = basic_iostream; using stringbuf = basic_stringbuf; using istringstream = basic_istringstream; using ostringstream = basic_ostringstream; using stringstream = basic_stringstream; using spanbuf = basic_spanbuf; using ispanstream = basic_ispanstream; using ospanstream = basic_ospanstream; using spanstream = basic_spanstream; using filebuf = basic_filebuf; using ifstream = basic_ifstream; using ofstream = basic_ofstream; using fstream = basic_fstream; using syncbuf = basic_syncbuf; using osyncstream = basic_osyncstream; using wstreambuf = basic_streambuf; using wistream = basic_istream; using wostream = basic_ostream; using wiostream = basic_iostream; using wstringbuf = basic_stringbuf; using wistringstream = basic_istringstream; using wostringstream = basic_ostringstream; using wstringstream = basic_stringstream; using wspanbuf = basic_spanbuf; using wispanstream = basic_ispanstream; using wospanstream = basic_ospanstream; using wspanstream = basic_spanstream; using wfilebuf = basic_filebuf; using wifstream = basic_ifstream; using wofstream = basic_ofstream; using wfstream = basic_fstream; using wsyncbuf = basic_syncbuf; using wosyncstream = basic_osyncstream; template class fpos; using streampos = fpos::state_type>; using wstreampos = fpos::state_type>; using u8streampos = fpos::state_type>; using u16streampos = fpos::state_type>; using u32streampos = fpos::state_type>;} [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L323) Default template arguments are described as appearing both in[](#header:%3ciosfwd%3e "31.3.1 Header synopsis [iosfwd.syn]") and in the synopsis of other headers but it is well-formed to include both[](#header:%3ciosfwd%3e "31.3.1 Header synopsis [iosfwd.syn]") and one or more of the other headers[.](#1.sentence-1)[257](#footnote-257 "It is the implementation's responsibility to implement headers so that including and other headers does not violate the rules about multiple occurrences of default arguments.") [257)](#footnote-257)[257)](#footnoteref-257) It is the implementation's responsibility to implement headers so that including [](#header:%3ciosfwd%3e "31.3.1 Header synopsis [iosfwd.syn]") and other headers does not violate the rules about multiple occurrences of default arguments[.](#footnote-257.sentence-1)