
Caleb Epstein wrote:
[...] concise, which is a tribute to the your implementation. At the same time, it is missing asynchronous and/or non-blocking operations and any means for doing single-threaded I/O multiplexing (e.g. select/poll/etc).
But these don't belong to a streams library anway - at least I wouldn't know how to support these I/O models without changing the stream interface.
If non-blocking I/O were a possibility, I don't think throwing exceptions on EWOUDBLOCK would be performant.
It should be possible to use socket streams with and without exceptions - then we come close to std::iostreams (and I think this is the goal of a socket streams library). As there is no flag in std::iostreams to indicate EWOULDBLOCK you use an existing one like failbit or introduce a new one eg. wouldblockbit. Boris