You didn't specifically mention whether this was covered, but beyond (full) Template Specialization you should also learn to use Partial Template Specialization.
There is
a recent article on Template Metaprogramming Programming[
^] which heavily uses partial specialization. It is probably difficult to understand for someone new to C++ Templates, but it provides great and useful examples that you can experiment with.
The new C++ 11 standard introduced new template features, e. g.
variadic templates[
^]. Additionally, the STL got some new functionality in C++ 11, e. g.
std::result_of[
^], which helps you determine the result type of an operation inside a template function or templated class.
Something else to check would be specifics on your IDEs support of templates: e. g. I know that VisualStudio 2010 doesn't support some legal template syntax expressions (I specifically had some trouble with forward declarations of template member functions). And of course VS and other IDEs don't usually support all the newest features of the most recent standard. For VS you can check on C++11 support on
their site[
^]