How to declare a parameterized recursive data structure?

Justin Whear via Digitalmars-d digitalmars-d at puremagic.com
Fri Aug 15 11:41:54 PDT 2014


On Fri, 15 Aug 2014 18:37:51 +0000, artemav wrote:

> I'm getting an error when trying to compile (DMD64 D Compiler v2.066)
> this:
> 
> struct node(T) {
>      T data; node!T next;
> };
> 
> void main() {
>      node!int n;
> }
> 
> output:
> test.d(3): Error: struct test.node!int.node cannot have field next with
> same struct type test.d(9): Error: template instance test.node!int error
> instantiating ...
> 
> It is so simple code that the error "... cannot have field next with
> same struct type" looks funny and sad at the same time. Is it a bug or
> are there some constraints why it cannot be compiled?

You want `node!(T)* next`.  Structs are POD types, not reference types, 
so the node struct would have a infinite regression.


More information about the Digitalmars-d mailing list