On Tuesday, 27 February 2018 at 09:58:00 UTC, bauss wrote:
On Tuesday, 27 February 2018 at 09:47:51 UTC, Stefan Koch wrote:
On Tuesday, 27 February 2018 at 09:23:19 UTC, bauss wrote:
On Tuesday, 27 February 2018 at 08:43:32 UTC, Timothee Cour wrote:
see rationale in https://issues.dlang.org/show_bug.cgi?id=18529

All I see is a rationale for how it can't be replaced, but not a rationale for actually doing it.

I can't imagine a "safe" situation where you want to do it.

Tbh. just put your code in @trusted

Checking if an array is the slice of another.

Like?

assert(a.ptr != b.ptr);

Which already works in @safe.

That only checks if the first element is the same. For a full 'is slice' check you'd need something like this:

assert(a.ptr <= b.ptr && b.ptr + b.length <= a.ptr + a.length);

// Or:

    auto c = b.ptr - a.ptr;
    assert(c >= 0 && c + b.length <= a.length);

And trust me, the compiler complains about both of these. Possibly rightfully in the first example, but the latter never does anything scary with the given pointers.

--
  Simen

Reply via email to