Expressing range constraints in CNF form

bachmeier via Digitalmars-d digitalmars-d at puremagic.com
Sun Jun 11 12:44:36 PDT 2017


On Sunday, 11 June 2017 at 15:25:11 UTC, Andrei Alexandrescu 
wrote:

>>> // Also possible (no change to the language)
>>> enum bool isInputRange(R) =
>>>     is(typeof((ref R r) => r)) && msg("must be copyable")
>>>     && is(ReturnType!((R r) => r.empty) == bool) && msg("must 
>>> support bool empty")
>>>     && is(typeof(lvalueOf!R.front)) && msg("must support 
>>> front")
>>>     && is(typeof(lvalueOf!R.popFront)) && msg("must support 
>>> back");

This would be a very nice change, but this syntax feels more 
natural to me:

is(ReturnType!((R r) => r.empty) == bool, "must support bool 
empty")




More information about the Digitalmars-d mailing list