How do I use non-type template parameters?

Non-type template parameters in C++ allow you to pass constant values (such as integers, pointers, or references) to templates. This can be useful for creating type-safe structures or functions that depend on a constant value at compile time.

Here’s an example of using non-type template parameters:

#include <iostream> template <int N> // Non-type template parameter class Array { public: int arr[N]; // Size of the array is determined by N void fill(int value) { for (int i = 0; i < N; ++i) { arr[i] = value; } } void print() { for (int i = 0; i < N; ++i) { std::cout << arr[i] << " "; } std::cout << std::endl; } }; int main() { Array<5> myArray; // Create an array of 5 elements myArray.fill(10); // Fill array with value 10 myArray.print(); // Print the array return 0; }

C++ templates non-type template parameters compile-time constant array size