Function IntrusivePtr.opCmp
Operators <, <=, >, >= for IntrusivePtr
.
sizediff_t opCmp
(
typeof(null) nil
) const pure nothrow @nogc scope @trusted;
sizediff_t opCmp(Elm)
(
scope const Elm elm
) const pure nothrow @nogc scope @trusted
if (is(Elm : GetElementReferenceType!(typeof(this))));
sizediff_t opCmp(Rhs)
(
auto scope const ref Rhs rhs
) const pure nothrow @nogc scope @trusted
if (isIntrusivePtr!Rhs && !is(Rhs == shared));
Compare address of payload.
Examples
static struct Foo{
ControlBlock!(int, int) c;
int i;
this(int i)pure nothrow @safe @nogc{
this .i = i;
}
}
{
const a = IntrusivePtr!Foo .make(42);
const b = IntrusivePtr!Foo .make(123);
const n = IntrusivePtr!Foo .init;
assert(a <= a);
assert(a >= a);
assert((a < b) == !(a >= b));
assert((a > b) == !(a <= b));
assert(a > n);
assert(a > null);
assert(n < a);
assert(null < a);
}
{
const a = IntrusivePtr!Foo .make(42);
const b = IntrusivePtr!Foo .make(123);
assert(a <= a .element);
assert(a .element >= a);
assert((a < b .element) == !(a .element >= b));
assert((a > b .element) == !(a .element <= b));
}