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.
|