Thread overview
Templated Binary Search Tree treats class as const, compiler complains
Jan 21, 2018
Mark
Jan 21, 2018
Mark
Jan 21, 2018
Timon Gehr
Jan 21, 2018
Mark
January 21, 2018
Hello,

I re wrote my old BST. This one is far more complete and clean.

However, It fails my final unittest when I try to stick a class in as its type.

Link: https://dpaste.dzfl.pl/95e1ae49b25b

Ive done this type of thing before, but it is giving me this error:

BinarySearchTree.d(30): Error: function BinarySearchTree.BinarySearchTree!(Empty).BinarySearchTree.New (Empty item) is not callable using argument types (const(Empty))
BinarySearchTree.d(40): Error: function BinarySearchTree.BinarySearchTree!(Empty).BinarySearchTree.New (Empty item) is not callable using argument types (const(Empty))
BinarySearchTree.d(574): Error: template instance BinarySearchTree.BinarySearchTree!(Empty) error instantiating

the New method is on line 94;

I was looking through the Programming in D book, and can't find what this is really telling me.

I have templated Stack and queue classes that don't give me these errors??

How do I make the BST accept classes like the one in my test?

I don't deal with const stuff, so I'm not too sure what to look for concerning these problems.

I'm still looking in the book/site for answers.

Thanks!
January 21, 2018
Just realized that I commented out the creation of the BST

new link: https://dpaste.dzfl.pl/ce620cbee919

January 21, 2018
On 21.01.2018 21:20, Mark wrote:
> Just realized that I commented out the creation of the BST
> 
> new link: https://dpaste.dzfl.pl/ce620cbee919
> 

'in' means 'const scope', but it seems you need references that are allowed to mutate the incoming items. Remove the 'in' attribute from the parameters and your problem should disappear.
January 21, 2018
On Sunday, 21 January 2018 at 20:46:56 UTC, Timon Gehr wrote:
> On 21.01.2018 21:20, Mark wrote:
>> Just realized that I commented out the creation of the BST
>> 
>> new link: https://dpaste.dzfl.pl/ce620cbee919
>> 
>
> 'in' means 'const scope', but it seems you need references that are allowed to mutate the incoming items. Remove the 'in' attribute from the parameters and your problem should disappear.

Ok, I was looking at the wrong stuff. Looking at varidiac functions in the book, I'm seeing what you're saying.

I thought that was used as a keyword for variadic arguments.


Thanks, that worked perfectly!
Mark.