Is "is" the same as ptr == ptr for arrays?

Peter Alexander peter.alexander.au at gmail.com
Sat Aug 7 09:04:35 PDT 2010


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.


More information about the Digitalmars-d-learn mailing list