Hi Ketmar,
Hi Ali,

thank you!

On Sunday, 8 February 2015 at 09:42:14 UTC, Ali Çehreli wrote:
    spawn(&user, cucs, ubyte(3));
^^^^^^^^^^^^^^^^^^^^^^^^^to!

Other than that, it works.

(The Attributes are basically literal constants but the library cannot know which are used in a given program - but probably not more than 20 or so are used realistically - it would be a UI design faux pas for content to be - like XP start menu - in hundreds of different yellowish greenish colors)

Unfortunately, I can't seem to get opEquals to work with immutable (or const, for that matter) either. (does compile, though)

The obvious
    bool opEquals(immutable(C) b) immutable {
        return value == b.value;
    }
doesn't work. Probably have to override the one from Object ? Even though I don't really use polymorphism here.

    override bool opEquals(Object b) immutable {
        return value == (cast(immutable(C)) b).value;
    }

Nope. Doesn't work (or compile) either.

As a test, I added

   foreach (ubyte i; 0 .. 10) {
        if (i % 2) {
            cucs.add(new immutable(C)(i));
assert(new immutable(C)(i) == new immutable(C)(i)); // this
        }
    }

to your program but the assertion fails after the changes (if it even compiles).

Hmm, maybe I should just store immutable struct C pointers? Yep, that works, although then I have to compare for equality by *a == *b... oh well, I use opEquals comparison only internally after all.

Reply via email to