https://issues.dlang.org/show_bug.cgi?id=11307
monarchdo...@gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |WONTFIX --- Comment #4 from monarchdo...@gmail.com --- (In reply to Kenji Hara from comment #3) > (In reply to monarchdodra from comment #0) > > ".init" is a global property, that is marked as rvalue, to prevent it being > > modified. This is correct behavior. > > > > However, when "T" is const/immutable already, then it is illegal to modify > > it anyways. Making ".init" an lvalue for such cases has advantages. > > Not only to prevent its modification, T.init makes an rvalue to prevent copy > construction on its usage. > > auto t = T.init; > > If T.init returns an lvalue, initializing t will always invoke T's postblit > if exists. I think that's good enough of a reason to not implement this. --