std::streamoff
From cppreference.com
                    
                                        
                    
                    
                                                            
                    |   Defined in header  <ios>
  | 
||
|   typedef /*implementation-defined*/ streamoff;  | 
||
The type std::streamoff is an implementation-defined signed integral (since C++11) type of sufficient size to represent the maximum possible file size supported by the operating system. Typically, this is an alias for long long. (since C++11)
It is used to represent offsets from stream positions (values of type std::fpos). A std::streamoff value constructed from -1 is also used to represent error conditions by some of the I/O library functions.
Relationship with std::fpos
-  the difference between two std::fpos objects is a value of type 
std::streamoff 
-  a value of type 
std::streamoffmay be added or subtracted from std::fpos yielding a different std::fpos. 
-  a value of type std::fpos is implicitly convertible to 
std::streamoff(the conversion result is the offset from the beginning of the file). 
-  a value of type std::fpos is constructible from a value of type 
std::streamoff 
See also
|    represents absolute position in a stream or a file  (class template)  | |
|    sets the input position indicator  (public member function of std::basic_istream<CharT,Traits>)  | |
|    sets the output position indicator  (public member function of std::basic_ostream<CharT,Traits>)  |