Practical Solutions for Real-Life Programming

Home Arturius Errata Resources Test Programs
Articles Compilers Libraries Site Map Tools
Site Map: /errata.html Visit The Imperfect C++ Website!

Errata

"You've got all the whistles and bells? Well here's everything else!"

Welcome to our version of a film's behind the scenes featurette. You may not see cyber agents multiplying in a virtual world fighting with hackers defying gravity, but we have something even better: stuff that didn't make it into the final cut! Now you tell me what's cooler!

There are a couple of errata from the book along with ... cough, cough ... my reviewing team's best efforts at suggesting sub-titles.


Book-related errata

Since this book is brand spankin' new, there've been no major bloopers caught/announced yet. Hopefully no typographical errors or general mishaps will eventuate (knock on wood!), but any that are discovered, will be placed on the errata1 page on the Imperfect C++ website1.

  • Fast String Concatenation; Chapter 25

    This technique, from Chapter 25, was presented to the world in the "Fast, Non-intrusive String Concatenation" article in the June 2004 issue of C/C++ Users Journal. Thanks to a reader - Sean K - for pointing out that the technique assumes that the parameterising string class stores its character data contiguously. That should be ok in practice, since I've never come across any string class - std or otherwise - that did not do so. Nonetheless, there is a theoretical problem with the implementation, and I'll be addressing this in the version 1.8 release of the STLSoft libraries.

  • dimensionof() in templates; Chapter 14

    There's a problem with the use of the dimensionof() (see Chapter 14) construct on arrays, when the type of the array is a locally defined struct/class. This is due to the restrictions on linkage of template parameterising types, as was discussed in Chapter 34.

    The solution I've come to with the STLSoft libraries is pretty much a hack at this point. The stlsoft_num_elements() construct, which is equivalent to the dimensionof construct, uses a helper macro, called stlsoft_num_elements_() which implements that normal, "C", approach using sizeof(x) / sizeof(0[x]). It's hardly pretty, or unambiguous, however, so I plan to provide a better named macro in the version 1.8 release of the STLSoft libraries.

  • New Range Category; Chapter 34

    The Range concept has evolved since the writing of the book, and there are now three main range categories: Notional Range. Iterable Range and the new Indirect Range.

    The Indirect Range concept enables callback enumeration APIs to be incorporated into the Range concept. So notional collections, iterator-based collections and callback enumeration APIs can all be treated in a common manner via range algorithms.

    The expanded concept is described in two articles in the October issue of C/C++ User's Journal, and will feature in my next book, Extended STL. If you're interested in Ranges, keep up to date at http://rangelib.org.

  • RangeLib not on CD; Chapter 34

    I said in the book that the RangeLib would be included on the CD. As things have turned out, John Torjo and I have not yet had the opportunity to prepare the library to the state we wanted to release it by the time the CD was prepared. By the time you are reading this, it will be available at http://rangelib.org.

Rejected Sub-titles

There was an inordinate amount of consternation, debate, discombobulation, flagellation, and general soul-searching to come up with a sub-title for the book.

I reached such a level of desparation that I was driven to the foolhardy step of asking my trusty team of Imperfect C++ reviewers for their suggestions. Here's a list of the more printable efforts. Thanks a bunch, chaps!

  • Imperfect C++: Righting The Wrongs
  • Imperfect C++: Tools for the Perfectionist Practitioner
  • Imperfect C++: A language only a mother could love
  • Imperfect C++: The Right Wrongs
  • Imperfect C++: ...Or... What Was Left Out
  • Imperfect C++: Dealing With The Language's Renowned(?) Flaws...Correctly
  • Imperfect C++: A Detailed Exploration Of What It Is And How To Overcome It
  • Imperfect C++: 10,000 ways to cry into your Coffee without mentioning Java
  • Imperfect C++: There's light at the end of the tunnel but the bulb just burnt out
  • Imperfect C++: I gave up malloc for new but then my wife left me, Visual Basic anyone?
  • Never mind the bollocks; meet Imperfect C++
  • Imperfect C++: Algorithms and Strategies for the advanced practitioner
  • Imperfect C++: Why we're always beating around the bush: But then we realize there's no bush.
  • Imperfect C++: You really really really really really really don't need Java (no really).
  • Imperfect C++: Towards a C++VM in our time: a memoir of rust, despair, and wasted CPU cycles.
  • Imperfect C++: Real-life isn't perfect. Why should C++ be?
  • Imperfect C++: The Devil's in the Details.
  • Imperfect C++: Striving toward perfection in computing.
  • Imperfect C++: Minutiae for your mind.
  • Imperfect C++: The book that Scott Patterson barely had any time to contribute his thoughts on... (MW: Not true. Scott was a big help in the very early stages.)
  • Imperfect C++: When you're too good to ask for directions
  • Imperfect C++: It's not a lost cause!
  • Imperfect C++: You won't need directions with this std::map
  • Imperfect C++: The Silver Bullet
  • Imperfect C++: Answers the age-old question, "Hunh?"
  • Imperfect C++: Ready for the long haul
  • Imperfect C++: Making a very good thing much better
  • Imperfect C++: Botox for your compiler
  • Imperfect C++: B-12 for your projects
  • Imperfect C++: Java, beware ...
  • Imperfect C++: Answers for the FAQs you were afraid to ask ...
  • Imperfect C++: Bjarne Stroustrop meets Barry Bonds
  • Imperfect C++: An algrorithmic galleria of salvos and solutions for the savvy practitioner.

[1]: Access to resources located on the World Wide Web requires an internet connectivity service.

Valid XHTML 1.0! Imperfect C++ content copyright Addison-Wesley | Additional content copyright Synesis Software Pty Ltd and Greg Peet
Website designed by Greg Peet. Thanks Greg!