December 14, 2022 [Issue 23556] New: Array append ignores copy constructor | ||||
|---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=23556 Issue ID: 23556 Summary: Array append ignores copy constructor Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: normal Priority: P1 Component: druntime Assignee: nobody@puremagic.com Reporter: snarwin+bugzilla@gmail.com As of DMD 2.101.0, the following program compiles and runs successfully to completion: --- struct S { this(ref S) { assert(0); } } void main() { S[] a = [ S() ]; auto p = a.ptr; // append until reallocation while (a.ptr == p) a ~= S(); // no assert } --- This program should assert at runtime when the array is reallocated, but does not, because the copy constructors of the array's elements are not called. If the copy constructor is changed to a postblit (`this(this)`), the program asserts at runtime, as expected. See also issue 20879, which affected .dup and .idup. -- | ||||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply