For something to be an output range it has to define the put primitive. I am wondering why there is only a single type of output range. Would it not make sense to have, say, a fillable output range which defines @property bool full()?

This could be used in functions like copy that currently just spam the output range until there's nothing left to throw at it. I can imagine situations where you would want to continuously copy from the input range until the output range was "satisfied".

Let's say we have a range that acts as a message queue between two threads. The consumer would have no issue checking if there are any available messages by calling empty, but the producer currently has no standard way of checking if the buffer is full.

Is there any reason that this isn't in the range spec, or has the need for it not arised yet? Maybe it's just a poor idea? Enlighten me.

Reply via email to