On Saturday, 29 May 2021 at 21:01:14 UTC, JN wrote:
this code compiles. Why? What is even the result in "f" in this case?

On Saturday, 29 May 2021 at 21:03:12 UTC, JN wrote:
fixed formatting:

```d
struct Foo
{
}

class Bar
{
}

void main()
{
    Bar b = new Bar();
    Foo* f = cast(Foo*)b;
}
```

You're writing @system code, so dangerous casts are allowed. It's no surprise that the code compiles. If you want to be safeguarded against such things, use @safe.

The result is a class object being reinterpreted as a struct object. Usually, that's just nonsense. But it might be useful for some expert who wants to tinker with the object's internals.

Reply via email to