Advanced C++ Programming Styles and Idioms