DIP1028 - Rationale for accepting as is
ag0aep6g
anonymous at example.com
Sun May 24 01:26:02 UTC 2020
On 24.05.20 02:55, Arine wrote:
> That works even if you make the static this() @safe, and remove the
> pointer incrementation.
Sure. `*p = 13;` is perfectly @safe. The static constructor isn't needed
for that part. You can just as well do the assignment in `main`. The
static constructor is another feature that can smuggle unsafe code (the
increment) into your program without the @trusted warning label.
> You'd have to make the p initialization @safe.
>
> @safe:
> int* p = cast(int*) &x; // error
>
> But note this doesn't work:
>
> @safe int* p = cast(int*) &x; // compiles
>
> Having the default become @safe will help detect this, as I don't
> imagine that is a whole lot of usage of @safe: to begin with.
The example compiles with `-preview=safedefault`. And even if that gets
changed, it will probably still compile when marked @system. So we still
won't find it when looking for "@trusted".
More information about the Digitalmars-d-announce
mailing list