30 Input/output library [input.output]

30.3 Forward declarations [iostream.forward]

30.3.2 Overview [iostream.forward.overview]

Шаблон класса специализация basic_­ios<charT, traits> служит в качестве виртуального базового класса для шаблонов классов basic_­istream, basic_­ostreamи шаблоны классов , полученных из них. basic_­iostream - это шаблон класса, производный от обоих basic_­istream<charT, traits> и basic_­ostream<charT, traits>.

Специализация шаблона класса basic_­streambuf<charT, traits> служит базовым классом для шаблонов классов basic_­stringbuf и basic_­filebuf.

Специализация шаблона класса basic_­istream<charT, traits> служит базовым классом для шаблонов классов basic_­istringstream и basic_­ifstream.

Специализация шаблона класса basic_­ostream<charT, traits> служит базовым классом для шаблонов классов basic_­ostringstream и basic_­ofstream.

Специализация шаблона класса basic_­iostream<charT, traits> служит базовым классом для шаблонов классов basic_­stringstream и basic_­fstream.

Другие typedef-names определяют экземпляры шаблонов классов, специализированных для типовchar или wchar_­t.

Специализации шаблона класса fpos используются для указания информации о положении файла.

Типы streampos и wstreampos используются для позиционирования потоков, специализирующихся на char и wchar_­t соответственно.

[ Note: Этот синопсис предполагает замкнутость между streampos и char_­traits<char>. Реализация может избежать этой замкнутости путем замены эквивалентных типов. Один из способов сделать это может быть

template<class stateT> class fpos { ... };      // depends on nothing
using _STATE = ... ;             // implementation private declaration of stateT

using streampos = fpos<_STATE>;

template<> struct char_traits<char> {
  using pos_type = streampos;
}

end note]