The exact definition of pos_type is a bit complicated: The C++ standard library defines a global
class template fpos for file positions. Class fpos is used to define types streampos for
char and wstreampos for wchar_t streams. These types are used to define the pos_type of the
corresponding character traits (see Section 16.1.4, page 855), and this pos_type member of the
traits is used to define pos_type of the corresponding stream classes. Thus, you could also use
streampos as the type for the stream positions. However, using long or unsigned long is wrong
because streampos is not an integral type (anymore).14 For example