I'm back
Jonathan M Davis
jmdavisProg at gmx.com
Thu Nov 15 16:58:59 PST 2012
On Thursday, November 15, 2012 22:11:33 Timon Gehr wrote:
> On 11/14/2012 08:32 PM, Jonathan M Davis wrote:
> > On Wednesday, November 14, 2012 20:18:26 Timon Gehr wrote:
> >> That is a very imprecise approximation. I think it does not cover any
> >> ground: The day eg. 'array' will require this kind of non-transient
> >> element range is the day where I will write my own.
> >
> > std.array.array _cannot_ work with a transient front. ...
>
> It can work if 'transient' is over-approximated like suggested in the
> parent post.
How so? std.array.array _needs_ copies when it creates its array. If front is
transient, it will end up with all elements being the same. So, either
transient fronts need to be illegal, or std.array.array needs to be able to
put a check for them in its template constraint to prevent them from being
used with it. In either case, no range with a transient front would work with
std.array.array.
All that inferring transience from the type of front will do is make it so
that std.array.array can prevent ranges with a transient front from compiling
with it, and it would be forced to reject a bunch of ranges which were _not_
transient, because any mutable reference type would have to be treated as
transient even if it wasn't. So, that doesn't make std.array.array work with
ByLine or its ilk at all.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list