what is the difference between function template and class template?
For normal code, you would use a class template when you want to create a class that is parameterised by a type, and a function template when you want to create a function that can operate on many different types. ... Expression templates allow you to speed up certain types of code or create domain specific languages.