On Thursday, 21 January 2016 at 14:35:09 UTC, Sebastiaan Koppe wrote:
static if (!is(SomethingUndefined!moreUndefined[0] : UndefinedThing))

Yes, the is expression returns false for undefined things because they aren't types. The standard library uses this in a lot of places to test for undefined functions, like checking for features in ranges. (The is expression has been around a lot longer than __traits btw)

Here's the relevant spec link:

http://dlang.org/spec/expression.html#IsExpression

"Type is the type being tested. It must be syntactically correct, but it need not be semantically correct. If it is not semantically correct, the condition is not satisfied. "

syntax is forming valid *looking* names and expressions, etc.

semantically correct means passing name lookups and other tests that require the compiler to understand the context.

It says it needs to look right, but not necessarily anything more.

Reply via email to