[Issue 17658] New: Shared postblits and dtors conflict with non-shared versions
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Mon Jul 17 05:25:46 PDT 2017
https://issues.dlang.org/show_bug.cgi?id=17658
Issue ID: 17658
Summary: Shared postblits and dtors conflict with non-shared
versions
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: major
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: jack at jackstouffer.com
Unlike the ctor, dtors and postblits cannot be overloaded with a shared version
that gets called on shared instantiations.
The main problem with this is that making any non-trivial struct work with
shared is now impossible, and the user has to make a new struct that's marked
with shared on the signature.
==================
struct A
{
this(string a) {}
this(string a) shared {}
~this() {}
~this() shared {}
this(this) {}
this(this) shared {}
}
void main()
{
shared f = A("");
}
==================
Gives
/d422/f152.d(7): Error: destructor f152.A.~this conflicts with destructor
f152.A.~this at /d422/f152.d(6)
/d422/f152.d(10): Error: function f152.A.__postblit conflicts with function
f152.A.__postblit at /d422/f152.d(9)
--
More information about the Digitalmars-d-bugs
mailing list