On Monday, 23 November 2020 at 17:39:09 UTC, Adam D. Ruppe wrote:
On Monday, 23 November 2020 at 17:34:27 UTC, visitor wrote:
Hi all,

I would like to know why in the code below, rgba.ptr[0] is used instead of rgba[0] and allowing the method to be @safe

The .ptr[0] skips bounds checking.

Since this example is static length with a constant index it shouldn't matter anyway; the compiler can see it is obviously in bounds and skip it too.

But if there's any runtime value there's a bounds check with `foo[0]` and that can be surprisingly expensive in certain situations. So `foo.ptr[0]` skipping that can give a nice performance boost.

Just without bounds checking the code is obviously trusting the programmer... hence @trusted is required instead of safe.


indeed because of the the static length and constant index, it was puzzling me ...
Thanks Adam for clarification

Reply via email to