Applied C++: Practical Techniques for Building Better Software