class Foo{ this(int a){} static void bug(Foo a = new Foo(77)){} } test.d(4): Error: no constructor for Foo This has been present since dinosaurs walked the earth(also failed in DMD 0.175). Moving the function outside the class allows it to compile. The struct version is D2 only: struct Foo{ this(int a){} void bug(Foo a = Foo(77)){} } test.d(4): Error: more initializers than fields of Foo This is part of a family of closely related bugs. If instead, the function is in a different struct/class, you get ICE bug 2437; if it's a free function, you get ICE bug 2935.
This code successfully compiles in git master.