Among the things I've listed about Archetype there's one interesting thing. Class instances aren't PODs, but sometimes I prefer reference semantics and to populate fields in a plain way, expecially for simple classes.
Time ago I and other people have suggested a syntax like (this also to avoid a class of bugs http://d.puremagic.com/issues/show_bug.cgi?id=3878 ): class Foo { string x; int y = 1; this(this.x, this.y) {} } void main() { Foo f3 = new Foo("hello", 10); } A simpler solution are classes with automatic constructors: class Foo { string x; int y = 1; } void main() { Foo f1 = new Foo(); // Good Foo f2 = new Foo("hello"); // Good Foo f3 = new Foo("hello", 10); // Good } What kind of problems are caused by this? :-) Currently that syntax is supported for structs created as values, but not for structs created by pointer: struct Foo { string x; int y = 1; } void main() { Foo* f1 = new Foo(); // OK Foo* f2 = new Foo("hello"); // Error: no constructor for Foo Foo* f3 = new Foo("hello", 10); // Error: no constructor for Foo } Bye, bearophile
