IntrusivePtr.opCmp

Operators <, <=, >, >= for IntrusivePtr.

Compare address of payload.

  1. sizediff_t opCmp(typeof(null) nil)
  2. sizediff_t opCmp(Elm elm)
    struct IntrusivePtr
    const @trusted scope pure nothrow @nogc
    sizediff_t
    opCmp
    (
    Elm
    )
    (
    scope const Elm elm
    )
  3. sizediff_t opCmp(Rhs rhs)

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));
}

Meta