DIP Proposal: @manualScoped to prevent automatic field destruction
FeepingCreature
feepingcreature at gmail.com
Fri Jul 27 09:30:00 UTC 2018
A new UDA is introduced: @manualScoped. It is valid for fields in
structs and classes, as well as variables and parameters. Fields
marked with @manualScoped are not automatically destructed on
scope end.
For instance, a function taking a struct as a @manualScoped value
will lead to a copy constructor call, but no destructor call. It
is assumed the passed value will be moved into another field via
move() or moveEmplace().
In @safe, only @manualScoped fields may be initialized with
.init. This is to indicate that init represents a hole in the
typesystem, and using it forces you to engage in manual lifecycle
management.
The goal of this DIP is to make the union hack unnecessary and
resolve the value/variable problem with .init initialized struct
destruction, where { S s = S.init; } led to a destructor call but
no corresponding constructor call.
Opinions?
More information about the Digitalmars-d
mailing list