NTTP (Non-Type Template Parameters) — это параметры шаблонов, которые не являются типами, а представляют собой значения, такие как целые числа, указатели или ссылки. Они позволяют более гибко настраивать поведение шаблонов, используя значения, а не типы.
Пример использования NTTP может включать определение шаблона класса с параметром, который является целым числом. Рассмотрим простой пример:
#include
// Шаблонный класс с NTTP
template
class Array {
public:
int data[N];
// Конструктор, заполняющий массив значениями от 0 до N-1
Array() {
for (int i = 0; i < N; ++i) {
data[i] = i;
}
}
// Метод для вывода элементов массива
void print() const {
for (int i = 0; i < N; ++i) {
std::cout << data[i] << " ";
}
std::cout << std::endl;
}
};
int main() {
// Создание экземпляров шаблона Array с разными значениями NTTP
Array<5> arr1;
Array<10> arr2;
std::cout << "Array of size 5: ";
arr1.print();
std::cout << "Array of size 10: ";
arr2.print();
return 0;
}
В этом примере:
Array — это шаблонный класс, принимающий целое число N в качестве NTTP.
Внутри класса определён массив data размером N.
Конструктор класса заполняет массив значениями от 0 до N-1.
Метод print выводит содержимое массива на экран.
В функции main создаются два экземпляра класса Array с различными значениями NTTP (5 и 10), и их содержимое выводится на экран.
Таким образом, NTTP позволяет создавать шаблоны, параметры которых могут управлять размером массивов, длиной строк и другими аспектами, зависящими от значений, а не только типов.