[Issue 6470] New: postblits not called on arrays of structs
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu Aug 11 17:05:48 PDT 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6470
Summary: postblits not called on arrays of structs
Product: D
Version: D1 & D2
Platform: All
OS/Version: All
Status: NEW
Keywords: wrong-code
Severity: major
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: mrmocool at gmx.de
--- Comment #0 from Trass3r <mrmocool at gmx.de> 2011-08-11 17:05:46 PDT ---
import std.stdio;
struct F
{
long m;
this(long arg)
{
m = arg;
writeln("\tconstructed F ", arg);
}
~this()
{
writeln("\tdestructed F ", m);
}
this(this)
{
writeln("\tcopied F ", m);
}
}
void main()
{
F a = F(1);
F b = F(2);
write("F[] arr = [a, b];\n");
F[] arr = [a, b];
write("F[] arr3;\narr3 ~= a;\n");
F[] arr3;
arr3 ~= a;
write("F[2] arr2 = [a, b];\n");
F[2] arr2 = [a, b];
}
Output:
constructed F 1
constructed F 2
F[] arr = [a, b]; // no postblit called (no destructor either, see bug 2834)
F[] arr3;
arr3 ~= a;
copied F 1 // only here it is called
F[2] arr2 = [a, b]; // no postblit called
destructed F 2 // b from arr2
destructed F 1 // a from arr2
destructed F 2 // b
destructed F 1 // a
Note that this issue ahs to be taken into consideration as well:
http://www.digitalmars.com/d/archives/digitalmars/D/Static_array_initialization_113536.html
--
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