Static inline field initialization

Steven Schveighoffer via Digitalmars-d digitalmars-d at puremagic.com
Tue Aug 22 06:18:59 PDT 2017


On 8/22/17 7:50 AM, Jonas Mminnberg wrote:
> Because of D's static initialization of members, this assert fails:
> 
> class Test {
>      ubyte[] buf = new ubyte[1000];
> }
> 
> void main() {
>      auto a = new Test();
>      auto b = new Test();
>      assert(a.buf.ptr != b.buf.ptr);
> }
> 
> This is bad, since;
> * It is not how C++ works
> * It introduces silent sharing of data
> * It's usually not what you want
> 
> Shouldn't this at least generate a warning, or ideally not be allowed?
> 

https://issues.dlang.org/show_bug.cgi?id=2947

-Steve


More information about the Digitalmars-d mailing list