12 line program... `main` is a nested function when trying to use redblacktree. Beginner error???

H. S. Teoh hsteoh at qfbox.info
Thu Jun 27 21:24:06 UTC 2024


On Thu, Jun 27, 2024 at 08:56:13PM +0000, WhatMeWorry` via Digitalmars-d-learn wrote:
> import std.container : RedBlackTree;
> 
> int main()
> {
> 
>     struct Location {
>         int x;
>         int y;
>     }
> 
>     struct Node{
>         this(Location loc, uint f) {
>             this.loc = loc;
>             this.f = f;
>         }
>         Location loc;
>         uint f;
>     }
> 
> auto priorityQueue = new RedBlackTree!(Node, "a.f < b.f", true); // true:
> allowDuplicates
> 
> // C:\D\dmd2\windows\bin64\..\..\src\phobos\std\container\rbtree.d(806):
> Error: `main` is
> // a nested function and cannot be accessed from
> // `std.container.rbtree.RedBlackTree!(Node, "a.f < b.f",
> true).RedBlackTree.allocate`
> 
> return 0;
> }

Move the declaration of Location and Node outside of main and it should
work.


T

-- 
Almost all proofs have bugs, but almost all theorems are true. -- Paul Pedersen


More information about the Digitalmars-d-learn mailing list