In Belfast, the single paper treatment of a single file i/o class proved to be very successful in creating progress, and there was widespread encouragement to bring back file_handle with suggested improvements to Prague. Many also voiced a wish to see mapped_file_handle, and seeing as the latter is also an implementation of the former, this paper now also describes the small number of differences that mapped_file_handle has over file_handle.
Many in Belfast wanted to see a generalised treatment of low level i/o using the same philosophy, dropping the ‘file’ part i.e. to propose low level stream i/o, such as for sockets, pipes etc. To that end, I have prepared [P2052] Making modern C++ i/o a consistent API experience from bottom to top which is a separate paper proposing the extension of low level file i/o into low level generalised i/o. Until the committee has formed an opinion to that proposal, those facilities are not mentioned in the R1 of this file i/o focused paper, apart from the coroutinised ‘blocking’ editions of the blocking i/o functions.