On Wed, Jun 24, 2026 at 10:21 AM Peter Dimov <pdimov@gmail.com> wrote:
You need the definitions of const_buffer and mutable_buffer to be available in order to see whether they have constructors from this or that, which requires physical coupling.
If const_buffer was constructible from span<byte> then this is a perfectly valid buffer sequence which does not require physical coupling: array<const_buffer, 3>
This way we don't need the full strength of an explicit concept, yet we can still get the benefits.
I have no idea what "full strength" there is. A concept is a concept, it's not any more complicated or strong than a concrete type.
A concept is stronger than a concrete type because a concrete type comes in exactly one formulation while types which satisfy a concept comes in infinite formulations.
You already have the concept, you just don't name it. "Convertible to const_buffer" is as much a concept as any other, and there's no "full" or "partial" strength involved anywhere.
"Convertible to X" feels qualitatively different to me than a concept, as one is scoped and the other is unbounded. Yet I accept your framing, and "convertible to X" is what Asio does, and what we will do, so we are agreeing. Thanks