Note:This is an excerpt from the course Beginning Modern C++.
C++ templates are used for creating high performance algorithms and classes. Most of the high performance libraries, such as Active Template Library, Windows Template Library, Adaptive Communication Environment, etc, have been implemented through C++ templates.
Templates are a challenge for any novice C++ programmer. But, this course will help you understand the syntax of templates. It gently takes you through the basics and then slowly builds upon the advanced concepts such as specialization, variadic templates, etc. All the concepts are explained with examples in Visual Studio, but will work in any C++11 compiler.
Have fun learning templates!