[Issue 5667] "clear" does not call destructors on structs embedded in structs
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Mon Feb 28 11:17:07 PST 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5667
Steven Schveighoffer <schveiguy at yahoo.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |schveiguy at yahoo.com
Summary|"clear" does not call |"clear" does not call
|destructors on embedded |destructors on structs
|structs |embedded in structs
--- Comment #1 from Steven Schveighoffer <schveiguy at yahoo.com> 2011-02-28 11:14:17 PST ---
Your first case is invalid. Clear depends on the type system:
auto buf = malloc(size)[0..size];
emplace!C(buf);
clear(buf); // here, typeof(buf) == void[], will not call the class version
This does work:
auto buf = malloc(size)[0..size];
auto c = emplace!C(buf);
clear(c);
The second case, I agree it's a bug. Even clearing a stack-based struct does
not call the embedded dtor:
S2 s2;
clear(s2);
assert(dtorCalled == 1); // fails
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list