| 
 |  | Updated 2006.10.20This 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| Category | Description |  | Fmt | Format: Change to page layout or text formatting only. |  | Typ | Typo: Correction of simple typographical errors, cut-and-paste errors, and dyslexic mistakes. |  | Enh | Enhancement: Addition of new or clarifying material. |  | Cor | Correction: Change made to correct a substantive error that could mislead a reader; does not include typos and occasional dyslexia. | 
 Errata (in page number order)| Page | Type | Reported | Fixed Printing
 | Description |  | 5 | Cor | 2001.12.24Leor 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.21Ramsay 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.26Leor Zolman
 | --- | In paragraph 2, line 1, change:in that it attempts
 To:is that it attempts
 |  | 45 | Typ | 2001.12.26Leor 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.26Leor Zolman
 | --- | In paragraph 3 ("The main..."), line 5, change:because of is ability to
 To:because of its ability to
 |  | 71 | Typ | 2001.12.27Leor Zolman
 | --- | In paragraph 4 ("After seeding..."), line 2, change:to make up a guess.
 To:to make up a combination.
 |  | 81 | Typ | 2001.12.27Leor Zolman
 | --- | At the end of the last paragraph, add the missing closing parenthesis.  |  | 119 | Typ | 2001.12.28Leor 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.28Leor 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.28Leor 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.28Leor Zolman
 | --- | In the footnote, line 1, change:it has access too
 To:it has access to
 |  | 151 | Fmt | 2001.12.28Leor 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.28Leor Zolman
 | --- | In the last line, change:use inheritance in which delegation alone
 To:use inheritance when delegation alone
 |  | 168 | Enh | 2001.12.29Leor 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.21Ramsay 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.29Leor Zolman
 | --- | In paragraph 5 ("Having said..."), line 1, change:even though the other alternatives
 To:even though other alternatives
 |  | 234 | Typ | 2002.07.12Igor 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.23Bill Yu
 | --- | In paragraph 2 ("As long as..."), line 2, change:Get-Error()
 To:GetError()
 |  | 251 | Typ | 2002.02.24Bill Yu
 | --- | In Example A-2, change the line:string SetError( const String& msg )
 To:String SetError( const String& msg )
 |  | 255 | Typ | 2002.02.24Bill 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
 | 
 |