The reason why according to you is for the buffer infrastructure. But as I've already told you, that's a relic from a decade ago. New code neither ought to nor needs to use that. We have far better available today.
"A relic from a decade ago" is not an argument.
It would not be if there hadn't been very significant progress in how to do generic and powerful buffers and views since. However, we have the Ranges TS now, we have Contiguous Container concept support, we have spans and views, all on the standards track. ASIO gets to keep its legacy design because it's so important to standardise existing practice, not invent standards by committee. But any new code must be held to a higher standard. And most especially in this particular case, dragging in the entire of ASIO for a few buffer types is just crazy daft. Instead use some Ranges TS inspired types - or a C++ 98 era iterator pair - from which ASIO can auto construct buffer sequences on its own. Do not drag in ASIO for such a trivial, and unnecessary, use case, so gratuitously damaging the end user experience as a result. Niall -- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/