By fixing issue 13204, this code should be allowed, but doesn't.
template AliasThisTypeOf(T)
{
static assert(0, T.stringof); // T.stringof is important
}
template StaticArrayTypeOf(T)
{
static if (is(AliasThisTypeOf!T AT))
alias X = StaticArrayTypeOf!AT;
else
alias X = T;
static if (is(X : E[n], E, size_t n))
alias StaticArrayTypeOf = X;
else
static assert(0, T.stringof~" is not a static array type");
}
enum bool isStaticArray(T) = is(StaticArrayTypeOf!T);
struct VaraiantN(T)
{
static if (isStaticArray!T)
~this() { static assert(0); }
}
struct DummyScope
{
alias A = VaraiantN!C;
static class C
{
A entity;
}
}
Blocking issue 13300.