On Wed, 16 Jun 2010 10:58:28 -0400, Simen kjaeraas
<[email protected]> wrote:
Steven Schveighoffer <[email protected]> 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