Invariants are useless the way they are defined
Dicebot
public at dicebot.lv
Mon Aug 26 10:31:35 PDT 2013
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.
More information about the Digitalmars-d
mailing list