The HATRED for String objects - "To String, or not to String"

Yes I prefer namespaces or trailing '_G'

The example is a good point I think as many are avoiding 'this->' to keep their code 'pretty', whereas blatant use will save you without even knowing it was a problem. i_NewVal is fine as its callee scope is non-dependant. Further templated functions would require further qualification.

The important part of my post was showing how the global was the sole cause of problems, the code otherwise would not have compiled.

So rather than receiving an error about 'i' being undefined in the class ( 'this->' is required to make the name dependant ), the previous definition of 'i' is silently used.