Recursive data structure using template won't compile

Rob T rob at ucora.com
Thu Nov 8 09:49:04 PST 2012


On Thursday, 8 November 2012 at 15:19:56 UTC, Dmitry Olshansky 
wrote:
>
> Naturally C++ doesn't have nested struct definitions.
>

I don't have a nested struct, the struct definition defines the 
type only, and the nodes are allocated as pointers from a new 
operation when the list is composed. The node struct has a member 
var that may or may not be a struct type, it does not matter, and 
C++ will allow a member data type to be a struct just fine.

>> I also want to template the recursive structure itself to 
>> specify the
>> value type, ie struct R(T){ T value; d_list!R Rlist; }, but I 
>> left that
>> out to keep the example more simple.
>>
>
>> I've been stuck on this problem all day, so any help is 
>> appreciated!
>
> See if it helps.

I tried moving the node struct outside the d_list struct, but no 
luck, and I think it should not matter anyway since I can get it 
to work in that way without a template.

The solution so far is to do it the C++ way, using pointers, 
which sucks.

I think in this case the D template should work just fine, and 
the problem is either a bug or a design flaw with how templates 
are evaluated.

I'll wait a bit longer for more comments before filing a bug 
report.

--rt




More information about the Digitalmars-d-learn mailing list