/*
TEST_OUTPUT:
---
fail_compilation/fail20551.d(15): Error: taking address of lazy parameter `e` is not allowed in a `@safe` function
fail_compilation/fail20551.d(26): Error: template instance `fail20551.LazyStore!int.LazyStore.opAssign!int` error instantiating
---
*/

struct LazyStore(T)
{
    T delegate() @safe dg;

    void opAssign(E)(lazy E e) @safe
    {
        dg = cast(typeof(dg)) &e;
    }

    T test() @safe{ return dg(); }
}

static LazyStore!int f;

void main(string[] args) @safe
{
    int x = 1;
    f = x + x + 20 + x * 20;
}
