I'm going to keep saying this until I turn blue in the face. Perhaps if I stamp my feet it might get more attention (wink)<p>Please stop confusing the language with the APIs or the available libraries and features of the language.<p>This sounds simple, but it's profound: simply because you <i>can</i> do something, that doesn't mean that you <i>have to</i> do it that way.<p>To use Zed's example, let's say I'm hacking around a lot of strings. What's wrong with rolling a string class, adding a member or two? You only have to carry around a bunch of nonsense if you want to. If you don't want to use templates and strings and such, don't use them.<p>This is another in a long line of articles that go something like this: We did X in this certain way, and boy did it suck. Therefore all of X is the devil's work and will destroy civilization.<p>You can put about anything you want in for X. It's like a (oddly enough) template engine for writing blog entries.<p>You should go through stages in your career, with just about any X. Stage one is that you are ignorant. Stage two is that you've tried it. Stage 3 is expertise. Stage 4 is hate, and Stage 5 is grudging acknowledgement that parts of X are okay for certain situations. You realize that yes, X is done poorly maybe 99% of the time, but lots of smart people worked on it and there are some little gems in there that are useful from time to time.<p>Looks like Zed is stuck on Stage 4<p>Throw away the templates, throw away all the library stuff you don't like -- is there a reason to make a class and wrap some things? If so, you can do that in C++. You can't in C. It's a very simple question, and it has nothing to do with any of the things Shaw is going on about.