More Exceptional C++ - Errata List

Home Blog Talks Books & Articles Training & Consulting

Up

On the
blog
RSS feed November 4: Other Concurrency Sessions at PDC
November 3
: PDC'09: Tutorial & Panel
October 26: Hoare on Testing
October 23
: Deprecating export Considered for ISO C++0x

Updated 2006.10.20

This page contains the complete current list of all known errata and updates for Herb Sutter's book More Exceptional C++ (English edition).

This errata list is maintained by the author.

The individual errata entries are listed in page number order. For each one, I have included the page number as of the last printing not incorporating the suggestion (including "xref" cross-references to related entries for other pages), the severity (summarized below), the person who first reported the erratum and when, the earliest English printing incorporating the correction, and a description of the erratum and its correction.

Errata Categories

CategoryDescription
FmtFormat: Change to page layout or text formatting only.
TypTypo: Correction of simple typographical errors, cut-and-paste errors, and dyslexic mistakes.
EnhEnhancement: Addition of new or clarifying material.
CorCorrection: Change made to correct a substantive error that could mislead a reader; does not include typos and occasional dyslexia.

Errata (in page number order)

PageTypeReportedFixed
Printing
Description

5

Cor

2001.12.24
Leor Zolman

---

C++ doesn't allow defaults for function template parameters.

In Example 1-2(c), change:
template<typename C = char, typename T = char_traits<C> >

To:
template<typename C, typename T>

30

Typ

2002.01.21
Ramsay Jones

---

In paragraph 2 ("Now T is int..."), change the line:
XImpl<MyCloneable, IsDerivedFrom<int, Cloneable>::Is>

To:
XImpl<int, IsDerivedFrom<int, Cloneable>::Is>

And change the line:
XImpl<MyCloneable, 0>

To:
XImpl<int, 0>

42

Typ

2001.12.26
Leor Zolman

---

In paragraph 2, line 1, change:
in that it attempts

To:
is that it attempts

45

Typ

2001.12.26
Leor Zolman

---

In point 2, paragraph 2, line 3, change:
the main reason to for collections conform

To:
the main reason for collections to conform

49

Typ

2001.12.26
Leor Zolman

---

In paragraph 3 ("The main..."), line 5, change:
because of is ability to

To:
because of its ability to

71

Typ

2001.12.27
Leor Zolman

---

In paragraph 4 ("After seeding..."), line 2, change:
to make up a guess.

To:
to make up a combination.

81

Typ

2001.12.27
Leor Zolman

---

At the end of the last paragraph, add the missing closing parenthesis.

119

Typ

2001.12.28
Leor Zolman

---

The footnote reference is in the quoted text, when it ought to be at the end of the heading immediately preceding it. Move the footnote reference to the end of the heading line "I Can't Keep No Caught Exceptions".

137

Typ

2001.12.28
Leor Zolman

---

In the first (and unnumbered) code example, change line 3 from:
auto_ptr<T2> = auto_ptr<T1>( new T2 ) );

To:
auto_ptr<T2> = auto_ptr<T2>( new T2 ) );

149

Typ

2001.12.28
Leor Zolman

---

In the next-to-last paragraph ("Is-A is......"), line 1, change:
usually used to described

To:
usually used to describe

151

Typ

2001.12.28
Leor Zolman

---

In the footnote, line 1, change:
it has access too

To:
it has access to

151

Fmt

2001.12.28
Leor Zolman

---

Inconsistent use of fonts:

In the first paragraph (restatement of question #2), the first two occurrences of "U" should also be in bold code font.

In the footnote, the first X is a different size than the last three X's, and all should be in code font.

153

Typ

2001.12.28
Leor Zolman

---

In the last line, change:
use inheritance in which delegation alone

To:
use inheritance when delegation alone

168

Enh

2001.12.29
Leor Zolman

---

In paragraph 4 ("If the class..."), lines 2-3, change:
and it has a public destructor, the following is a common technique to make the destructor pure virtual (it should be anyway):

To:
and it has a public destructor, make the destructor pure virtual (it should be anyway):

170

Typ

2002.01.21
Ramsay Jones

---

In Example 27-2(c), line 6, change the line:
protected virtual bool f() = 0;

To add a colon and split it into two lines:
protected:
 
virtual bool f() = 0;

180

Enh

2001.12.29
Leor Zolman

---

In paragraph 5 ("Having said..."), line 1, change:
even though the other alternatives

To:
even though other alternatives

234

Typ

2002.07.12
Igor Krassikov

---

At the top of the page (which continues Example 39-1(c)), the using-directive is supposed to appear before, not after, the function f. Also, change "parameter" to "argument" in the column.

Change:
void f()
{
  X x;      // OK, X is a synonym for A::X
  Y y;      // error, no Y has been seen yet
  f( 1 );   // OK, calls A::f(double) with parameter promotion
}

using namespace A;

To:
using namespace A;

void f()
{
  X x;      // OK, X is a synonym for A::X
  Y y;      // error, no Y has been seen yet
  f( 1 );   // OK, calls A::f(double) with argument promotion
}

249

Typ

2002.02.23
Bill Yu

---

In paragraph 2 ("As long as..."), line 2, change:
Get-Error()

To:
GetError()

251

Typ

2002.02.24
Bill Yu

---

In Example A-2, change the line:
string SetError( const String& msg )

To:
String SetError( const String& msg )

255

Typ

2002.02.24
Bill Yu

---

In paragraph 4 ("To cut a...'), lines 4-5, change:
Item 16 includes a test harness

To:
Appendix B includes a link to a test harness

 

Copyright 2009 Herb Sutter