There are so many twisted things you can do with C++, you need dozens of books on C++. There are so many more twisted things you can do with Templates, you need a few more books just on that subject.|
Interestingly, for all the power that Templates, overloading (especially of operators), C++ memory management, io streams, STL, etc, give you, there are so many idiosyncracies in its use that you need big books on the subject.
This becomes evident the more you try advanced things with the language. C++ is very powerful and very complicated. With this power not only comes responsibility, but a whole boat load of idioms that you must follow to use the features correctly.
C++ Templates: The Complete Guide is a wonderful book on a hairy subject. C++ template programming is the beginning of the "escape from C++". For example, STL is fantastically useful to a C++ programmer. To a Python, perl, Tcl, Lisp programmer it is a frustrating attempt at genericity. To a Java programmer, STL is looked upon with envy...