REVIEW - The C++ Standard Library from Scratch


The C++ Standard Library from Scratch


Pablo Halpern



Que Pub (1999)




Francis Glassborow


April 2000



When I first heard of this title my instinctive reaction was that it would be another waste of trees. For those that need an authoritative tutorial and reference for the C++ Standard Library The C++ Standard Library by Nicolai Josuttis will be very difficult to beat. I am telling you this so that you will know the mind set I had when I picked this book up.

I do not think it is entirely my fault that I started with this expectation, I think the title has a lot to answer for. This is not a definitive tutorial nor is it any form of reference. On the other hand neither the author not the publisher claims that it is. The publisher classifies it as 'Beginning' level but mars that by saying that it covers 'the ANSI/ISO C++ Standard Library'. It does not. What it does is act as a good introduction to using the C++ Standard Library for relatively inexperienced C++ programmers.

The text is based round developing a small application (a small Personal Information Manager, TinyPIM). This means that various features of the Standard Library are introduced as solutions to design and implementation problems. I am a fan of this type of tutorial approach and I think the author has executed it well for his target readership. By the time a reader has worked through the text they will be motivated to buy an authoritative text such as that by Josuttis. I would hope they would then progress to adding Matt Austern's Generic Programming and the STL to their programming books.

Now let me warn you that I disagree with some aspects of the text. I do not like the use of friend to provide such things as insertion and extraction operators. There are several other style issues of that kind (you know that I prefer the rigid placement of cv qualifiers to the right of the thing they qualify).

I think my other complaint is a little more serious, I strongly object to seeing code littered with include guards that use lowercase letters. There is a de facto standard for include guards and the sooner new programmers get in the habit of using it the easier they will find writing code that conformsto the industry norms. The industry standard is not arbitrary but based on experience and it works.

My last caveat is the author's use of specifically MSVC++ #pragmas. He carefully provides those as conditionally inclusions - quite unnecessary as #pragmas are designed so that they do not need to be surrounded with #ifdef...#endif. Worse is that this provides special support for a single product.

In conclusion, this is a fundamentally good text for its target readership. However, it is marred by some of the detail. It achieves what it set out to do but along the way it exposes the novice to some bad or debatable coding habits.

Book cover image courtesy of Open Library.

Your Privacy

By clicking "Accept Non-Essential Cookies" you agree ACCU can store non-essential cookies on your device and disclose information in accordance with our Privacy Policy and Cookie Policy.

Current Setting: Non-Essential Cookies REJECTED

By clicking "Include Third Party Content" you agree ACCU can forward your IP address to third-party sites (such as YouTube) to enhance the information presented on this site, and that third-party sites may store cookies on your device.

Current Setting: Third Party Content EXCLUDED

Settings can be changed at any time from the Cookie Policy page.