A common use case is to transform each Node once even when *1 &1 DAG sharing exists in the input. This needs an 'already processed' set, which, using only is() would be quadratic in this use case. hashable ids (exposing the underlying pointer used by is) makes it linear time. For performance, part of node/detail/node.h is effectively exposed - the fact that it has a shared_ptr<node_ref> as its first member. Alternatively the implementation of id() could be made non-inline so the full definition of detail::node could be used. |
||
|---|---|---|
| .. | ||
| yaml-cpp | ||