Avoid using size() when operator bool() will suffice
Replace char_t pointers with iterators
Move IO-related classes to abc::io namespace
Update copyright years
Move static abc::io::file members to abc::io namespace
Restructure binary I/O class hierarchy after Python’s io module
Remove unnecessary initializations to nullptr
Move and rename abc/file.{c|h}xx to abc/io/binary.{c|h}xx
Split binary.{c|h}xx into binary{|_file}.{c|h}xx
Include fewer header files
Prefix include guards with “_”
Rename binary_file.{c|h}xx file_binary.{c|h}xx
Add buffered binary I/O classes
Use more specific pointer types for file_binary non-member functions
Add abc::io::seekable_binary
Remove abc::io::binary_base, convert abc::io::binary_{reader,writer} to pure interfaces
Add abc::io::sized_binary
Make abc::io::regular_file_binary_base implement abc::io::sized_binary
No need to use “virtual” to implement pure interfaces
Re-enable using the size of m_pfile with abc::text::guess_encoding() if possible