On Wednesday, 25 July 2012 at 10:40:22 UTC, deadalnix wrote:
Static opCall isn't a solution. You can't new on it. And it
seems weird that you can disable something that don't possibly
exists in the first place.
This topic comes back again and again on the NG, it have to be
considered.
If I get a concrete example, let say RefCounted, I can see in
the source code that many checks are performed to handle the
case where the struct is .init . It have a runtime cost and
make the code more complex.
It is more error prone because specific cases must be handled
all over the place. Having .init is certainly an interesting
capability of D, but in this specific case, it isn't sure it
worth it.
I think a good solution would be to simply allow structs to have
a "no-argument constructor".
However, we'd have to hammer in the fact that this "no-argument
constructor" is NOT a "default constructor" that always gets
called. It is an explicit constructor, just like any other, but
doesn't take any arguments.
It seems straight forward, simple and intuitive to me actually.