Files
2025-10-25 03:02:53 +03:00

8.5 KiB
Raw Permalink Blame History

[iostream.forward]

31 Input/output library [input.output]

31.3 Forward declarations [iostream.forward]

31.3.1 Header synopsis [iosfwd.syn]

🔗

namespace std {template struct char_traits; template<> struct char_traits; template<> struct char_traits<char8_t>; template<> struct char_traits<char16_t>; template<> struct char_traits<char32_t>; template<> struct char_traits<wchar_t>; template class allocator; template<class charT, class traits = char_traits>class basic_ios; template<class charT, class traits = char_traits>class basic_streambuf; template<class charT, class traits = char_traits>class basic_istream; template<class charT, class traits = char_traits>class basic_ostream; template<class charT, class traits = char_traits>class basic_iostream; template<class charT, class traits = char_traits, class Allocator = allocator>class basic_stringbuf; template<class charT, class traits = char_traits, class Allocator = allocator>class basic_istringstream; template<class charT, class traits = char_traits, class Allocator = allocator>class basic_ostringstream; template<class charT, class traits = char_traits, class Allocator = allocator>class basic_stringstream; template<class charT, class traits = char_traits>class basic_spanbuf; template<class charT, class traits = char_traits>class basic_ispanstream; template<class charT, class traits = char_traits>class basic_ospanstream; template<class charT, class traits = char_traits>class basic_spanstream; template<class charT, class traits = char_traits>class basic_filebuf; template<class charT, class traits = char_traits>class basic_ifstream; template<class charT, class traits = char_traits>class basic_ofstream; template<class charT, class traits = char_traits>class basic_fstream; template<class charT, class traits = char_traits, class Allocator = allocator>class basic_syncbuf; template<class charT, class traits = char_traits, class Allocator = allocator>class basic_osyncstream; template<class charT, class traits = char_traits>class istreambuf_iterator; template<class charT, class traits = char_traits>class ostreambuf_iterator; using ios = basic_ios; using wios = basic_ios<wchar_t>; 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<wchar_t>; using wistream = basic_istream<wchar_t>; using wostream = basic_ostream<wchar_t>; using wiostream = basic_iostream<wchar_t>; using wstringbuf = basic_stringbuf<wchar_t>; using wistringstream = basic_istringstream<wchar_t>; using wostringstream = basic_ostringstream<wchar_t>; using wstringstream = basic_stringstream<wchar_t>; using wspanbuf = basic_spanbuf<wchar_t>; using wispanstream = basic_ispanstream<wchar_t>; using wospanstream = basic_ospanstream<wchar_t>; using wspanstream = basic_spanstream<wchar_t>; using wfilebuf = basic_filebuf<wchar_t>; using wifstream = basic_ifstream<wchar_t>; using wofstream = basic_ofstream<wchar_t>; using wfstream = basic_fstream<wchar_t>; using wsyncbuf = basic_syncbuf<wchar_t>; using wosyncstream = basic_osyncstream<wchar_t>; template class fpos; using streampos = fpos<char_traits::state_type>; using wstreampos = fpos<char_traits<wchar_t>::state_type>; using u8streampos = fpos<char_traits<char8_t>::state_type>; using u16streampos = fpos<char_traits<char16_t>::state_type>; using u32streampos = fpos<char_traits<char32_t>::state_type>;}

1

#

Default template arguments are described as appearing both in and in the synopsis of other headers but it is well-formed to include both and one or more of the other headers.257

257)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.

31.3.2 Overview [iostream.forward.overview]

1

#

The class template specializationbasic_ios<charT, traits> serves as a virtual base class for the class templatesbasic_istream,basic_ostream, and class templates derived from them.

basic_iostream is a class template derived from bothbasic_istream<charT, traits> andbasic_ostream<charT, traits>.

2

#

The class template specializationbasic_streambuf<charT, traits> serves as a base class for class templatesbasic_stringbuf,basic_filebuf, andbasic_syncbuf.

3

#

The class template specializationbasic_istream<charT, traits> serves as a base class for class templatesbasic_istringstream andbasic_ifstream.

4

#

The class template specializationbasic_ostream<charT, traits> serves as a base class for class templatesbasic_ostringstream,basic_ofstream, andbasic_osyncstream.

5

#

The class template specializationbasic_iostream<charT, traits> serves as a base class for class templatesbasic_stringstream andbasic_fstream.

6

#

[Note 1:

For each of the class templates above, the program is ill-formed iftraits::char_type is not the same type ascharT ([char.traits]).

— end note]

7

#

Other typedef-names define instances of class templates specialized forchar orwchar_t types.

8

#

Specializations of the class templatefpos are used for specifying file position information.

[Example 1:

The typesstreampos andwstreampos are used for positioning streams specialized onchar andwchar_t respectively.

— end example]

9

#

[Note 2:

This synopsis suggests a circularity betweenstreampos andchar_traits.

An implementation can avoid this circularity by substituting equivalent types.

— end note]