On Monday, 23 November 2020 at 01:20:04 UTC, data pulverizer wrote:
Hi all,

I am trying to construct a tree data structure composed of differently (statically) typed nodes. The basic case is a binary tree. So you have a node like:

```
struct Node(T)
{
  T value;
  Node* next;
  Node* prev;
}

void main()
{
  auto x = Node!(int)(2);
  auto y = Node!(double)(3.2);
  x.next = &y; //gives error
}
```
Error: cannot implicitly convert expression & y of type Node!double* to Node!int*

So implicity Node!(T) will produce an object with prev, and next type Node!(T)*. But once I give them different types:

```
struct Node(T, P, N)
{
  T value;
  Node!(P...)* prev;
  Node!(N...)* next;
}
```

I can no longer specify the types at all, they become circularly referenced. Would appreciate the solution to this.

Many thanks.

p.s. Something equivalent can be built using tuples but it's less convenient to write code for.

Reply via email to