You may know that ISO recently voted in favour of a Technical Report (TR) from the C++ Standards Committee (WG21) that substantially extends the C++ Standard Library. More recently WG21 incorporated almost all these extensions (the Special Maths Functions are currently an exception) into the Working Draft (colloquially called the Working Paper) of the next full release of the C++ Standard.
This book documents the material included by the TR as well as some additions and changes that have been provided by the 1999 release of the C Standard. The sum total almost doubles the size of the Library.
The back cover describes this book as the perfect companion to The C++ Standard Library by Nicolai Josuttis. I do not agree. The style and the depth of the tutorial aspect is markedly different (as you would expect from the difference of authorship).
Before going further, I should say that I did not like the layout and presentation of code in this volume, and regret that this was not more like that in Nico's book. The layout is much more like that used by P.J. Plauger in his excellent book on the Standard C Library (hardly surprising as Pete has worked closely with PJP for quite a number of years).
Whilst I am on the negative aspects, I should add that I find end of chapter exercises completely inappropriate for a book of this nature. Some of the exercises would be better (in my opinion) presented as worked examples and others add nothing useful and will be skipped by almost every reader. Perhaps the relegation of potential worked examples to exercises for the reader goes some way to explain why this book is relatively so much shorter than The Standard C++ Library (533 pages of main text versus 742 pages). The other part of the explanation is that Pete gives nothing more than bare bones documentation for the numeric and special maths functions. I think it would have been useful if he had included a commentary on the discovered (by him and PJP) problems with the implementations of the Special Maths Functions, several of which have very limited accuracy in certain circumstances.
By now you may think that I am against this book. You would be mistaken. Pete has tackled a difficult but very necessary task with a high degree of technical competence and I have no doubt that this book belongs on the reference shelf of every competent C++ Programmer.
There is nothing else current available that gets even close to providing the wealth of information you will find here. Many readers will find the extensive section on regular expressions to be just what they need to get to grips with this important aspect of C++ programming.
The chapter on random number generators surely must be compulsory reading for anyone who wishes to use a PRNG in their code. The chapter on smart pointers should be compulsory study for all post-novice C++ programmers.
Though this book is not the one I would have wished it is a tour de force covering some very difficult material. The extensions to the Standard C++ Library are exactly those that are needed as the fundamental building blocks for competent programmers. These kind of library resources are so much more useful than the plenitude of higher level libraries that exponents of other languages seem to expect.
If you are serious about your C++, go and buy this book today because it will be some time before anything better comes along (however for future readers of this review, note that that statement is made in August 2006 and might not remain true indefinitely).