[iostreams.limits.pos]

# 31 Input/output library [[input.output]](./#input.output)

## 31.2 Iostreams requirements [[iostreams.requirements]](iostreams.requirements#iostreams.limits.pos)

### 31.2.3 Positioning type limitations [iostreams.limits.pos]

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L97)

The classes of [[input.output]](input.output "31 Input/output library") with template argumentscharT andtraits behave as described iftraits​::​pos_type andtraits​::​off_type arestreampos andstreamoff respectively[.](#1.sentence-1)

Except as noted explicitly below, their behavior whentraits​::​pos_type andtraits​::​off_type are other types isimplementation-defined[.](#1.sentence-2)

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L119)

[*Note [1](#note-1)*:

For each of the specializations of char_traits defined in[[char.traits.specializations]](char.traits.specializations "27.2.4 char_­traits specializations"),state_type denotes mbstate_t,pos_type denotes fpos<mbstate_t>,
and off_type denotes streamoff[.](#2.sentence-1)

â *end note*]

[3](#3)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L128)

In the classes of [[input.output]](input.output "31 Input/output library"), a template parameter with namecharT represents a member of the set of types containing char, wchar_t,
and any other implementation-defined
character container types ([[defns.character.container]](defns.character.container "3.10 character container type"))
that meet the requirements for a character on which any of
the iostream components can be instantiated[.](#3.sentence-1)
