30 Input/output library [input.output]

30.2 Iostreams requirements [iostreams.requirements]

30.2.2 Positioning type limitations [iostreams.limits.pos]

The classes of Clause [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.
In the classes of Clause [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 satisfy the requirements for a character on which any of the iostream components can be instantiated.