Exceptional C++

Exceptional C++ shows by example how to go
about sound software engineering in standard C++. The
puzzles and problems in Exceptional C++ not only
entertain, they will help you hone your skills
to become the sharpest C++ programmer you can
be. Each problem is rated according to difficulty
and is designed to illustrate subtle programming mistakes
or design considerations. After you've had a chance
to attempt a solution yourself, the book then
dissects the code, illustrates what went wrong, and
shows how the problem can be fixed. Covering
a broad range of C++ topics, the problems
and solutions address critical issues such as: Generic
programming and how to write reusable templates; Exception
safety issues and techniques; Robust class design and
inheritance; Compiler firewalls and the Pimpl Idiom; Name
lookup, namespaces, and the Interface Principle; Memory management
issues and techniques; Traps, pitfalls, and anti-idioms; Optimization.