template<typename T>

Allows writing generic functions and classes that work with any type, resolved at compile time for maximum performance.

Syntax

cpp
template<typename T>
returnType funcName(T param) { }

Example

cpp
template<typename T>
T maxOf(T a, T b) { return a > b ? a : b; }

cout << maxOf(3, 7);        // 7 (int)
cout << maxOf(3.14, 2.71);  // 3.14 (double)

template<typename T>
class Stack {
  vector<T> data;
public:
  void push(T val) { data.push_back(val); }
};