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.

Reply via email to