Search in Book Reviews
My technical books broadly fall into two categories. On the one hand there's references, like Stroustrup's C++ Programming Language or Josuttis. On the other hand there are books with more of a narrative flow like Meyers' or Sutter's books. With 'Beyond the C++ Standard Library' Karlsson manages to fall into both categories.
After a brief introductory chapter the remainder of the book is simply a catalogue of popular picks from the Boost libraries, one chapter per library. In some ways this is one of the books few downfalls, in that the coverage is necessarily patchy. The book in no way attempts to offer full coverage of the Boost libraries, and would be a pretty hefty tome if it did, but having had Karlsson show you around some libraries he is missed for others.
In keeping with the Boost libraries themselves, this is not guide for the C++ novice. The base level of knowledge presumed by the author is significant, and you need to be familiar and comfortable with all the advanced features of C++, like templates and functors, and similarly with the STL (containers, algorithms, binders etc). In a book titled, "Beyond the C++ Standard Library" this does perhaps go without saying.
The text is graced with many excellent examples, which conspire to cover a broad range of different use cases, and together form a useful body of knowledge of the details of the syntax. In same way that K&R shows the idioms of C, and Meyers and Sutter many of the idioms of C++, this book shows us how to get things done with the Boost Libraries. It has quickly become the volume I reach for when I need to remind myself what a certain construct looks like.
The text accompanying the examples is comfortably fast paced, and with a pleasant narrative style. Karlsson even manages to inject a little humour from time to time, which is welcome in book dealing with such a intricate topic. As well as being a comprehensive account of how it works, this book also manages to convey and share the author's obvious pleasure at the beauty and elegance of the Boost libraries, and gives good insight into the architectural forms that these facilities encourage. In short, with this book under your belt, the solution space for everyday programming requirements is so very much richer.
Your milage may vary depending on your environment, but for me the highlights were the chapters on Boost.Bind, Boost.Lambda and Boost.Function. The ability to define anonymous functions at the call site scratched an itch for me in the same way that the introduction of classes into C did - an elegant solution to an obvious problem.
At 380 pages, this is already a substantial book, but I can only hope Karlsson will write further volumes!