On 15.05.2019 16:08, Bogdan wrote:
I don't have any experience with using templates. Is it possible to create a RB tree containing structs, where the nodes are ordered by one struct member?

```
import std.stdio;
import std.container;

enum KeyID: uint
{
     KEY_A,
     KEY_S,
     KEY_D,
     KEY_W
}

struct KeyController
{
     KeyID ID;
     bool isDown;
}


void main()
{
     auto rbt = redBlackTree!KeyController;
}

```

When I run this I get a compile error:
```
Error: template instance `std.container.rbtree.RedBlackTree!(KeyController)` does not match template declaration RedBlackTree(T, alias less = "a < b", bool allowDuplicates = false) if (is(typeof(binaryFun!less(T.init, T.init))))
```


You can use predicate for this purpose:
```
auto rbt = redBlackTree!((a, b) => a.ID < b.ID, KeyController);
```

https://run.dlang.io/is/CNRTQf

Reply via email to