January 28, 2019
https://issues.dlang.org/show_bug.cgi?id=19625

          Issue ID: 19625
           Summary: [Reg 2.066] module-level static template struct can't
                    take alias to a delegate
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: regression
          Priority: P1
         Component: dmd
          Assignee: nobody@puremagic.com
          Reporter: john.loughran.colvin@gmail.com

static struct S(alias f)
{
    int foo() { return f(); }
}

void main()
{
    int a;
    int b = S!(() => a)().foo;
}

Error: function onlineapp.main.S!(delegate () => a).S.foo cannot access frame
of function D main

Removing the `static` causes it to compile fine, but why does static do anything at module scope? I tried to read the docs but they didn't say much on the topic.

This was fixed in https://github.com/dlang/dmd/pull/2794 and then broken again in the revert https://github.com/dlang/dmd/pull/3884/

--