Templates are a powerful feature in C++ that allow you to write generic and reusable code. Here's a quick overview of the fundamentals:

What Are Templates? 🧱

Templates enable functions and classes to operate with generic types. This means you can create a single function or class that works for multiple data types, such as int, float, or custom classes.

  • Function Templates: Define functions that can accept any type.
  • Class Templates: Create classes that can work with various data types.
  • Template Parameters: Specify types or values that can be substituted at compile time.

Example: Function Template 📌

template <typename T>
T add(T a, T b) {
    return a + b;
}
// This can be used with int, float, or any other type that supports + operator

Example: Class Template 🧰

template <typename T>
class Box {
public:
    Box(T value) : content(value) {}
    T getContent() { return content; }
private:
    T content;
};

Template Specialization 🔧

You can specialize templates for specific types or values. For example:

template <>
string add(string a, string b) {
    return a + " " + b;
}

Practice Code 💻

Try implementing a simple template function to calculate the maximum of two values:

template <typename T>
T max(T x, T y) {
    return (x > y) ? x : y;
}

Expand Your Knowledge 📘

For deeper insights into advanced C++ templates, check out our C++ Templates Advanced Guide.

C++ Templates Basics