Are null refs intentionally allowed?
Tejas
notrealemail at gmail.com
Sat Jul 16 12:40:06 UTC 2022
On Saturday, 16 July 2022 at 12:33:57 UTC, Dukc wrote:
> This compiles and runs just fine, printing what you'd except:
>
> ```D
> @safe void main()
> {
> import std.stdio;
>
> int* p;
> isNull(*p).writeln;
> p = new int(5);
> isNull(*p).writeln;
> }
>
> @safe bool isNull(ref int x){return &x is null;}
> ```
>
> The question is, is this intentional? I'm writing "DIP1000:
> Memory Safety in a Modern System Programming Language Pt. 2"
> and currently I've written that this is allowed, even when it's
> not in C++.
>
> But there are still two possibilities: either this is okay by
> design, or works by accident but really disallowed. Which is
> the case?
It doens't compile when I run it on run.dlang.io, erroring out
with:
```
onlineapp.d(11): Error: cannot take address of parameter `x` in
`@safe` function `isNull`
```
More information about the Digitalmars-d
mailing list