Categories for the Working C++ Programmer