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