how is this array subtyping inside struct (bug?) possible?
Alexandru Ermicioi
alexandru.ermicioi at gmail.com
Tue Aug 11 22:11:51 UTC 2020
On Monday, 10 August 2020 at 20:42:34 UTC, Steven Schveighoffer
wrote:
> On 8/10/20 4:13 PM, mw wrote:
>>>> This defeats the purpose, i.e. the convenience that
>>>> subtyping mechanism supposed to provide.
>>>
>>> You are subtyping but inadvertently have turned a forward
>>> range (array) into an input range (iterate only once) by
>>> changing it into a class.
>>
>> This subtyping loophole should be fixed by the compiler.
>
> No, it is doing exactly what you asked it to do -- turn a
> non-reference type into a full reference type.
>
> The fault here is Phobos for accepting classes as ranges (range
> classes are IMO an abomination that should never be used).
Yet, they allow to mask implementation of a range. Phobos
shouldn't just prohibit all class based ranges, just those that
don't implement right interfaces, such as InputRange(T) or
ForwardRange(T).
More information about the Digitalmars-d
mailing list