On Wednesday, 15 May 2019 at 13:15:50 UTC, Stefan Koch wrote:
Key controller cannot be compared by less
which is why it fails, give it an opCmp and it'll work.
Works fine, thank you! For some reason, I thought that this
template uses references:
```
enum KeyID: uint
{
KEY_A,
KEY_S,
KEY_D,
KEY_W
}
struct KeyController
{
KeyID ID;
bool isDown;
int opCmp(ref const KeyController other) const {return this.ID -
other.ID;}
}
void main()
{
KeyController[] monitoredKeys = [{KeyID.KEY_A}];
auto rbt = redBlackTree!KeyController;
rbt.insert(monitoredKeys);
writeln(rbt);
monitoredKeys[0].isDown = true;
writeln(rbt);
}
```
Output:
```
RedBlackTree([const(KeyController)(KEY_A, false)])
RedBlackTree([const(KeyController)(KEY_A, false)])
```