fix opEquals type

This commit is contained in:
Walter Bright 2009-11-22 08:38:36 +00:00
parent 78d04c9566
commit 1b0d9811c3
3 changed files with 12 additions and 7 deletions

View file

@ -297,12 +297,12 @@ struct BitArray
size_t len; size_t len;
uint* ptr; uint* ptr;
size_t dim() const size_t dim()
{ {
return (len + 31) / 32; return (len + 31) / 32;
} }
size_t length() const size_t length()
{ {
return len; return len;
} }
@ -578,7 +578,7 @@ struct BitArray
* Support for operators == and != for bit arrays. * Support for operators == and != for bit arrays.
*/ */
bool opEquals(BitArray a2) const bool opEquals(const ref BitArray a2)
{ int i; { int i;
if (this.length != a2.length) if (this.length != a2.length)

View file

@ -208,7 +208,7 @@ struct Box
} }
/** Return whether this value could be unboxed as the given type without throwing. */ /** Return whether this value could be unboxed as the given type without throwing. */
bool unboxable(TypeInfo test) bool unboxable(TypeInfo test) const
{ {
if (type is test) if (type is test)
return true; return true;
@ -335,9 +335,14 @@ struct Box
* Compare this box's value with another box. This implicitly casts if the * Compare this box's value with another box. This implicitly casts if the
* types are different, identical to the regular type system. * types are different, identical to the regular type system.
*/ */
bool opEquals(Box other) const bool opEquals(const ref Box other)
{ {
return opEqualsInternal(other, false); return (cast(Box)this).opEqualsInternal(cast(Box)other, false);
}
const bool opEquals(Box other)
{
return (cast(Box)this).opEqualsInternal(other, false);
} }
private float opCmpInternal(Box other, bool inverted) private float opCmpInternal(Box other, bool inverted)

View file

@ -242,7 +242,7 @@ Always $(D false) (random generators are infinite ranges).
/** /**
Compares against $(D_PARAM rhs) for equality. Compares against $(D_PARAM rhs) for equality.
*/ */
bool opEquals(LinearCongruentialEngine rhs) const bool opEquals(ref const LinearCongruentialEngine rhs) const
{ {
return _x == rhs._x; return _x == rhs._x;
} }