Is alias equality inconsistent?

Jens Mueller jens.k.mueller at gmx.de
Fri May 13 12:11:58 PDT 2011


Hi,

I find that comparing for alias equality is a bit odd. Maybe somebody
can shed some light into it.

int a = 1;
int b = 1;
assert(a is b);

but

int[1] aFixedArray = [1];
int[1] bFixedArray = [1];
assert(aFixedArray !is bFixedArray);

It behaves as specified in TDPL p. 57:
"If a and b are arrays or class references, the result is true if and
only if a and b are two names for the same actual object;
Otherwise, a is b is the same as a == b."

But fixed-size arrays have value semantics as int, float etc. So why is
alias equality not consistent with value vs. reference semantics? Why
this exception for fixed-size arrays?

Jens


More information about the Digitalmars-d mailing list