Just commenting on what I said on IRC.  This is not safe (and not desirable, IMO). The issue is that the static member `ContextIgnoreNode` is returned as a non-const object reference. Therefore anything or anyone using this function can change `ContextIgnoreNode` and cause mayhem by (quite reasonably) modifying the returned object reference. 