[#BloombergLP-ball-CategoryManager_RadixTree_ChildNodeGuard] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/ball.adoc[ball]::CategoryManager_RadixTree_ChildNodeGuard :relfileprefix: ../../ :mrdocs: RAII guard to remove a child node when an exception is thrown during value emplacement in a `CategoryManager_RadixTree_Node`. This guard ensures exception safety by automatically removing a newly created child node from its parent if the value construction throws an exception. == Synopsis Declared in `<ball_categorymanager_radixtree.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class t_VALUE> class CategoryManager_RadixTree_ChildNodeGuard; ---- == Type Aliases [cols="1,4"] |=== | Name| Description | xref:BloombergLP/ball/CategoryManager_RadixTree_ChildNodeGuard/ChildIterator.adoc[`ChildIterator`] | Iterator over the child nodes of a radix tree node. | xref:BloombergLP/ball/CategoryManager_RadixTree_ChildNodeGuard/Node.adoc[`Node`] | `Node` is an alias for a node in the radix tree. |=== == Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/ball/CategoryManager_RadixTree_ChildNodeGuard/2constructor.adoc[`CategoryManager_RadixTree_ChildNodeGuard`] [.small]#[constructor]# | Create a guard managing the specified `child` iterator in the specified `parent` node. The guard will erase the child from the parent upon destruction unless `release()` is called. | xref:BloombergLP/ball/CategoryManager_RadixTree_ChildNodeGuard/2destructor.adoc[`~CategoryManager_RadixTree_ChildNodeGuard`] [.small]#[destructor]# | Destroy this guard. If `release()` has not been called, erase the child node from the parent (specified at construction). | xref:BloombergLP/ball/CategoryManager_RadixTree_ChildNodeGuard/release.adoc[`release`] | Release this guard, preventing the child node from being erased upon destruction. This method should be called after the value has been successfully emplaced in the child node. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#