C++ Templates: The Complete Guide (2nd Edition)