I'm not going to pretend to understand the particular thing y'all are talking about, but I feel I should share some of my beliefs about programming.

First of all, when a site or book calls something 'evil,' I don't think their intention is to suggest that it should never be used. They merely suggest that it should probably be shyed away from unless it is the lesser of two evils; therefore, I wouldn't be so quick to attack a site or book for calling something 'evil.'

It is my belief that everything in C++ is there for a reason. That belief is little more than blind faith in some programmers somewhere to be much smarter than me. My guess is that the feature you guys are talking about was put in the language for a reason, and although nothing is right in all situations, it seemingly has to be right for some situation; otherwise, it wouldn't make sense for someone to include it in C++.

I know that I don't know as much about C++ as many of you, but that's my rule of thumb about language features (i.e. goto, #define, etc.).