module imports.gdc170;

class bar(T)
{
    void undefined_reference() {}
}

template foo(T)
{
    bar!T foo1(T2)() if (true) body { return null; }
    bar!T foo2(T2)() { return null; }
    bar!T foo3(T2 = void)() if (true) body { return null; }
    bar!T foo4(T2 = void)() { return null; }
    void foo5(T2)(bar!T x) if (true) body {}
    void foo6(T2)(bar!T x) {}
    void foo7(T2 = void)(bar!T x) if (true) body {}
    void foo8(T2 = void)(bar!T x) {}
}
