// https://issues.dlang.org/show_bug.cgi?id=16472
enum e() = 0;
template t(alias v = e!()) {} //Error
alias dummy = t!(e!());
template E(F){
    enum E {
        K = F(1)
    }
}
struct S(F = float, alias e_ = E!double.K) {}
S!float x; // Error: E!double.K is used as a type
alias T = E!double.K;
struct S2(F = float, alias e_ = T) {}
S2!float y; // alias makes it okay...
struct S3(F = float, alias e_ = (E!double.K)) {}
S3!float z; // just putting parens make it okay as well... wat!?
// for coverage
template G(T)
{
    struct G
    {
        alias I = int;
        static int i;
    }
}
struct H(F = float, alias e_ = G!double) {}
H!float a;
struct H1(F = float, alias e_ = G!double.I) {}
H1!float b;
// https://issues.dlang.org/show_bug.cgi?id=21795
// struct H2(F = float, alias e_ = G!double.i) {}
// H2!float c;