I looked into special case resolving the:
template closureOf() {
static if (is(typeof({
BasicVector x;
x.bar(x);
}))) {}
enum closureOf = 1;
}
as being an eponymous template anyway, since the static if adds no members, but
if I look at scid I see:
template closureOf( T ) {
static if( isScalar!(Unqual!T) ) {
enum closureOf = Closure.Scalar;
} else static if( is( typeof(T.closure) : Closure ) ) {
enum closureOf = T.closure;
} else {
static assert( false, T.stringof ~ " is not a valid
expression." );
}
}
and such a fix won't help scid. It cannot figure out which branch of static if
to use because it is circular, and so it won't know the type of the eponymous
template, so it cannot proceed to initialize lhsClosure, and so fails.
_______________________________________________
dmd-beta mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-beta