On Tue, Sep 10, 2019 at 11:05 PM Vinnie Falco
`std::basic_ostream` is actually quite usable once you figure out how it works
Let me illustrate why I disagree with that. Suppose you want to implement a base64 encoder. You want it to be fast, agnostic, and simple to use. Now suppose you adopt `std::ostream` as the destination type: void to_base64( std::ostream& dest, const std::byte* src, std::size_t count ); You will face two issues: 1) It doesn't matter how well you (as the library author) understand basic_ostream. The *user* needs to implement derivates of basic_ostream to customize the destination types. 2) It's impossible to achieve a decent performance. If you used `outbuf` you could write directly into the buffer. But with `std::ostream` you have to call member functions like `put` or `write` to for each little piece of the content, or to use an additional intermediate buffer. And this is far to be a specific use case. The same issues apply for any kind of encoding, binary or text.