There is currently no way to add a const Node* to a Node_Array/Node_List/Unique_Node_List (without const-casting which should be avoided). We should think about ways how we could add this possibility to C2. One option is to turn these classes into templates to have node lists with normal modifiable nodes (Node*) and non-modifiable const nodes (const Node*). We can still add modifiable nodes to const node lists if we do not intend to modify them through the list.
The idea behind this is that there are a lot of places where we do not actually want to modify the nodes but rather keep them on a list and iterate through them to query them. Having lists with const nodes also gives us a guarantee that these nodes do not get modified which is sometimes hard to tell in more complex usages.
An additional problem that would be solved by this is the ability add 'this' to node lists inside const functions. This cannot be done with the current Node* lists without const-casting or making the entire function non-const. Neither of these solutions is satisfying.
The idea behind this is that there are a lot of places where we do not actually want to modify the nodes but rather keep them on a list and iterate through them to query them. Having lists with const nodes also gives us a guarantee that these nodes do not get modified which is sometimes hard to tell in more complex usages.
An additional problem that would be solved by this is the ability add 'this' to node lists inside const functions. This cannot be done with the current Node* lists without const-casting or making the entire function non-const. Neither of these solutions is satisfying.