The thing is this:
```C++
int
main( int argc, char **argv ) {
  Node node;
  // empty_node.refs.value == 1
  return 0;
  // node is destructed here, empty_node.refs.value drops to 0, and it would be deleted, but it's not allocated on the heap.
  // it won't be deleted in this code because your release_node function is checking if the node is &empty_node, but this isn't
  // a good idea to keep doing, because it might not be the only static node ever to exist, and could also hide bugs to do with
  // not refcounting properly.
}
```