Expressing range constraints in CNF form
Nick Treleaven via Digitalmars-d
digitalmars-d at puremagic.com
Sun Jun 11 08:11:39 PDT 2017
On Sunday, 11 June 2017 at 00:28:58 UTC, Andrei Alexandrescu
wrote:
> https://github.com/dlang/phobos/pull/5461
>
> There's many good advantages to this. The immediate one is the
> constraint is better structured and easier to understand. Then,
> the compiler can print the exact clause that failed, which
> improves the precision and quality of the error message.
Great!
> // 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");
I'm not getting how this works.
More information about the Digitalmars-d
mailing list