On Sunday, 27 November 2011 at 19:50:24 UTC, deadalnix wrote:
Hi,

I wonder why struct can't have a default constructor...

I know this is an old thread, but I've run into this same problem recently and search yielded this result.

I myself have tried working around the default-constructor problem with things like

this(bool bInit = true)

- which of course doesn't get invoked with MyStruct(), even with @disable this.

This seems like a language limitation to me. I have a few templated resource management objects that rely on RAII, but sometimes there's no real use for arguments, especially if a template defines what needs to be created. But now I'm forced to both disable the default constructor AND to require unnecessary parameters. Why? Another workaround is to use some object factory mechanism, but that's just extra code to maintain.

Also, apparently doing cleanup in class object destructors is a big no-no as resources that it may need to clean up could potentially already be destroyed, depending on when the GC kicks in and what objects are cleared by it. So no possibility of using objects as resource acquire/release mechanisms.

I assume using scoped with class objects will have a similar problem..

Reply via email to