31 Input/output library [input.output]

31.2 Iostreams requirements [iostreams.requirements]

31.2.3 Positioning type limitations [iostreams.limits.pos]

The classes of [input.output] with template arguments charT and traits behave as described if traits​::​pos_­type and traits​::​off_­type are streampos and streamoff respectively.
Except as noted explicitly below, their behavior when traits​::​pos_­type and traits​::​off_­type are other types is implementation-defined.
[Note 1:
For each of the specializations of char_­traits defined in [char.traits.specializations], state_­type denotes mbstate_­t, pos_­type denotes fpos<mbstate_­t>, and off_­type denotes streamoff.
— end note]
In the classes of [input.output], a template parameter with name charT represents a member of the set of types containing char, wchar_­t, and any other implementation-defined character types that meet the requirements for a character on which any of the iostream components can be instantiated.