On 06/09/2017 05:32 AM, Mark wrote:
https://dpaste.dzfl.pl/ff58876ce213
[...]
What Id like to do is this:
auto tree = new BSTbase!int;
...
tree.insert(7);
and
auto Tree2 = new BSTbase!Aclass;
...
Tree2.insert(Aclassobject);
What I have is:
Tree.insert(7, cast(real) 7);
and
Tree2.insert(Aclassobject, cast(real) (cast(void*) Aclassobject));
I tried a few things, but I can't get them to work.
Can anyone give a way for me to avoid doing it this clumsy way?
Get rid of `real val;` and just compare `payload`s. For classes, you can
detect them with `static if (is(T == class))` or some such, and cast to
void* when comparing.
But when you cast to void*, you're ignoring an opEquals or opCmp the
class might have. That might be surprising. So maybe just require that
classes implement opCmp. Or try to detect when a class doesn't have
opCmp and only cast then.