On 7/08/10 4:33 PM, simendsjo wrote:
Is the following equalent?

int[] a;
int[] b = a;
assert(a is b);
assert(a.ptr == b.ptr);

No.

(a is b) implies (a.ptr == b.ptr)

but

(a.ptr == b.ptr) does not imply (a is b)

For example:

int[] a = [1, 2, 3];
int[] b = a[0..1];

Here, a.ptr == b.ptr, but a !is b.

The ptr property returns a pointer to the first element, which is true in this case, but it doesn't mean that they both refer to the same range.

Reply via email to