Rob T wrote: | struct d_list( T ) | { | struct node | { | T payload; | node* pred; | node* succ; | } | node* head; | node* tail; | }
This doesn't loo like a list. It looks like the ancor of a list. Let me rewrite it and use D-parlor. | struct Ancor( T){ | struct Node | { | T payload; | Node* pred; | Node* succ; | } | Node* head; | Node* tail; | } This might be the ancor of a doubly linked list for a `payload' of generic type `T'. But there is a problem: generic type `T' might be itself a double linked list using an ancor of type `Ancor'. If this would be true and there would be no mooring everyone, compiler included, would plunge into an infinite loop. Therefore `T' must inform `Ancor' wether that condition comes true---or `T' itself must take the lead. -manfred