On Monday, 10 April 2017 at 00:48:39 UTC, Walter Bright wrote:
On 4/9/2017 5:12 PM, Andrew Godfrey wrote:
Is it general?
No.
If not, what is special about Exceptions that makes it work
here?
It only works because all ways that such exceptions can leak
are controlled. D doesn't have copy construction for making
copies of class references. You couldn't use this scheme, for
example, to stuff class references into struct fields.
Ok. So then if I have created a refcounted Exception, and later
(in another function) I take a reference to it (by stuffing it
into a struct field, say), how does that work? What is the value
of _refcount after that happens? Is it 0? Or do we take "one more
reference to indicate the GC owns it"?