| /* |
| TEST_OUTPUT: |
| --- |
| fail_compilation/test16365.d(21): Error: `this` reference necessary to take address of member `f1` in `@safe` function `main` |
| fail_compilation/test16365.d(23): Error: cannot implicitly convert expression `&f2` of type `void delegate() pure nothrow @nogc @safe` to `void function() @safe` |
| fail_compilation/test16365.d(27): Deprecation: address of variable `s` assigned to `dg` with longer lifetime |
| fail_compilation/test16365.d(28): Error: `dg.funcptr` cannot be used in `@safe` code |
| --- |
| */ |
| |
| // https://issues.dlang.org/show_bug.cgi?id=16365 |
| |
| struct S |
| { |
| void f1() @safe { } |
| } |
| |
| void main() @safe |
| { |
| void function() @safe f; |
| f = &S.f1; |
| void f2() @safe { } |
| f = &f2; |
| |
| void delegate() @safe dg; |
| S s; |
| dg = &s.f1; |
| f = dg.funcptr; |
| } |