Class/struct invariants
Steven Schveighoffer
schveiguy at yahoo.com
Wed Jun 16 08:16:22 PDT 2010
On Wed, 16 Jun 2010 10:58:28 -0400, Simen kjaeraas
<simen.kjaras at gmail.com> wrote:
> Steven Schveighoffer <schveiguy at yahoo.com> wrote:
>> During default struct construction, no constructors are run (they
>> aren't allowed anyways) and no invariants are run. What would be the
>> point of running an invariant during default construction? The only
>> think it could possibly do is make code like this:
>>
>> S s;
>>
>> Fail without -release, and pass with -release. I don't see the value
>> in that.
>
> Ah, but I do. If it is an error to create an uninitialized struct of
> type S, then the above code is a bug, is it not?
Yes, but an invariant doesn't guarantee that, since it is non-existent in
release mode, and a compile time error is better.
What you want is to be able to disable the default constructor. Andrei
has hinted it might be a future improvement on other threads.
-Steve
More information about the Digitalmars-d-learn
mailing list