Forward ranges in Phobos v2
Alexandru Ermicioi
alexandru.ermicioi at gmail.com
Wed Nov 3 10:28:56 UTC 2021
On Tuesday, 2 November 2021 at 20:17:06 UTC, Andrei Alexandrescu
wrote:
> On 2021-11-02 15:32, Adam D Ruppe wrote:
>> On Tuesday, 2 November 2021 at 18:09:55 UTC, H. S. Teoh wrote:
>>> Why is this necessary? I thought we're getting rid of
>>> std.range.interfaces.
>>
>> It is actually really, really, useful. If phobos didn't offer
>> it, someone would reinvent it anyway.
>>
>> (In fact, there's a lot of cases where using them is more
>> efficient than generating more and more code...)
>
> Yah, polymorphism has its place. The only problem is passing
> around reference ranges. They should have a thin struct wrapper
> that carries the proper copy semantics.
So, if forward range interface (from std.range.interfaces) is to
be kept in phobos, it should provide a .save method, that can be
used instead of copy constructor.
Then, it is possible to have only one wrapper struct for
transforming it into value type (i.e. behave same as struct
forward range), that would use .save when wrapper's copy
constructor is invoked. It would allow to use this wrapper as
part of method parameter type, in order to enforce people using
it, and not randomly forgetting to wrap it.
More information about the Digitalmars-d
mailing list