On Monday, 26 August 2013 at 16:49:01 UTC, Peter Alexander wrote:
On Monday, 26 August 2013 at 14:16:04 UTC, Dicebot wrote:
On Monday, 26 August 2013 at 07:20:56 UTC, Davidson Corry wrote:
...

By the way it makes me think that invariant should run via CTFE on T.init for all types that have invariant contracts. The fact that default-initialize value may have a broken contract greatly diminishes value of the whole system.

Not all invariants can run at compile time.

True, but it will at least make a notable cluster of potential issues into compile-time errors. Actually, I'd expect non-CTFE invariant to be quite rare - those rarely do any I/O or some weird pointer forging.

If invariant is not CTFE-able it should be deferred to runtime to the initial point of the aggregate construction.

Reply via email to