advanced C++ techniques