While practicing stack using linked list, I ran across the following piece of code:

```
class stack {
private:
    struct node {
        double value;
        node* next;
    };
    size_t stack_size;
    node* head;
...
}

```

As you can see, the struct `node` has a pointer field `*node`. How can a field be of the same type as the struct? That field is a pointer to the struct, right? But it looks recursive(?). I haven't seen such a style before, what does that mean? What is the purpose of such writing?