Struct that destroys its original handle on copy-by-value

Ali Çehreli via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Jul 31 11:13:04 PDT 2015


On 07/31/2015 11:01 AM, Dicebot wrote:> On Friday, 31 July 2015 at 
17:21:40 UTC, Ali Çehreli wrote:
 >> On 07/26/2015 04:29 AM, Joseph Rushton Wakeling via
 >> Digitalmars-d-learn wrote:
 >>
 >> > is this design idea even feasible in principle, or just a bad
 >> > idea from the get-go?
 >>
 >> As I understand it, it is against one of fundamental D principles:
 >> structs are value types where any copy can be used in place of any 
other.
 >>
 >> I expect there are examples where even Phobos violates it but the
 >> struct documentation still says so: "A struct is defined to not have
 >> an identity; that is, the implementation is free to make bit copies of
 >> the struct as convenient."
 >
 > I believe this restriction should be banned. Considering classes have
 > inherent reference + heap semantics (and you can only bail out of that
 > with hacks) saying struct can't be anything but data bags makes
 > impossible to implement whole class of useful designs.
 >
 > The fact that Phobos has to violate it itself to get stuff done is quite
 > telling.

To make sure, I didn't mean that I know of structs in Phobos that behave 
that way. Although, it would be interesting to identify them. :)

Ali



More information about the Digitalmars-d-learn mailing list