use templates hwen you need anything "generic", mostly it's generic types, when you need to have a class that can operate with variable types, not just limited to one type. The only advantage of non-type template parameters isjust in functions, and it's (possible) automatic deduction. Otherwise you can just add them as parameters.