Better handling of noncopyable objects and objects with this(this)

Jonathan M Davis via Digitalmars-d digitalmars-d at puremagic.com
Mon Jun 1 03:18:33 PDT 2015


On Monday, 1 June 2015 at 04:43:20 UTC, Andrei Alexandrescu wrote:
> FYI I just created 
> https://issues.dlang.org/show_bug.cgi?id=14638 as one of 
> possibly several language enhancements to improve usability of 
> noncopyable types (most allocators are not copyable) and to 
> enhance performance of objects that define this(this). -- Andrei

On a related note, as was brought up recently (by Ketmar IIRC), 
ranges currently forbid noncopyable objects thanks to

     auto h = r.front; // can get the front of the range

in isInputRange. If we want to fix that, then we're probably 
going to need to change isInputRange so that it checks that we 
can access front but doesn't require copying and then add 
something like hasCopyableElements for the algorithms that do 
need to copy front. I'm not a huge fan of that idea given how 
much code exists which copies front and how that would likely 
require that a lot of range-based functions add even more checks 
to their template constraints, but I'm not sure what else we can 
reasonably do if we want noncopyable elements to work in ranges, 
and the change wouldn't break existing code, just make it so that 
much of it would need updated template constraints in order to 
avoid compilation errors if anyone ever tries to use a range with 
noncopyable elements with it.

- Jonathan M Davis


More information about the Digitalmars-d mailing list