On Tue, Jun 21, 2022 at 01:29:47PM -0400, Steven Schveighoffer via Digitalmars-d-learn wrote: > On 6/21/22 1:17 PM, H. S. Teoh wrote: [...] > > This is why I've proposed in the past that @safe functions should be > > allowed to call @system delegates that they receive as arguments. The > > reasoning goes like this: if the delegate was in fact @safe (i.e., it's > > a @safe delegate passed to a @system parameter -- @safe is covariant > > with @system), then there is no problem. If the delegate was @system, > > then the caller can only have been called from @system somewhere up the > > call stack (@safe code can't create @system delegates), so we're also > > OK: if the caller was @system, then we guarantee nothing anyway. > > However, Walter didn't seem convinced by this proposal. > > ```d > void foo(void delegate() @system dg) @safe { > int *bar; > @system void corrupt() { bar = cast(int *)0xdeadbeef;} > dg = &corrupt; > // can I call dg now? > } > ``` [...]
Does the language allow you to declare a @system delegate inside @safe code? T -- Being able to learn is a great learning; being able to unlearn is a greater learning.