I want to be clear that I'm trying to define a recursive data structure, not a recursive D struct, which of course is not possible.

The nodes in the d_list are allocated as pointers, and the node size syhould be knowable during compile time, so this is IMO a design flaw with how templates are being evaluated. It's possible that I'm doing something wrong, so correct me if there's a reasonable way to get this job done (eg no use of mixin hacks).

--rt

On Thursday, 8 November 2012 at 18:07:45 UTC, Rob T wrote:
On Thursday, 8 November 2012 at 17:57:11 UTC, Philippe Sigaud wrote:
Rob, your original code:

// d-linked list with templated payload
struct d_list( T )
{
   struct node
   {
      T payload;
      node* pred;
      node* succ;
   }
   node* head;
   node* tail;
}

compiles just fine for me (Linux 32bits, DMD 2.060).

Even with some exercising, the template doesn't fail:

void main()
{
   auto list = d_list!(int)();
}



Yes that part works fine, but that's only the d_list part. When I try to use my supposedly re-usable d-list to define a recursive struct, that's when it fails. Take another look at the original post, you'll see what I mean.

--rt


Reply via email to