[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