Creating a RedBlackTree

Stefan Koch uplink.coder at googlemail.com
Wed May 15 13:15:50 UTC 2019


On Wednesday, 15 May 2019 at 13:08:18 UTC, 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))))
> ```

Key controller cannot be compared by less
which is why it fails, give it an opCmp and it'll work.


More information about the Digitalmars-d-learn mailing list