Оглавление
- 1 Шаблон (C++)
- 1.1 Основы шаблонов C++
- 1.2 Виды шаблонов
- 1.3 Шаблоны функций
- 1.4 Шаблоны классов
- 1.5 Переменные шаблоны
- 1.6 Нетиповые параметры шаблона
- 1.7 Специализация шаблона
- 1.8 Вариативные шаблоны
- 1.9 Псевдонимы шаблонов
- 1.10 Сравнение с другими языками
- 1.11 Метапрограммирование шаблонов
- 1.12 Дополнительные ресурсы
- 1.13 Полный текст статьи:
- 2 Шаблон (C++) — Википедия
Шаблон (C++)
-
Основы шаблонов C++
- Шаблоны позволяют функциям и классам работать с универсальными типами без полного объявления.
- Шаблоны эквивалентны копированию и вставке шаблонного кода с заменой параметра шаблона на фактический тип.
- Реализация шаблонов помещается в заголовки, так как символы не могут быть скомпилированы без знания типа.
-
Виды шаблонов
- Существуют шаблоны функций, классов и переменных, начиная с C++14.
- Шаблоны могут быть вариативными или невариативными, начиная с C++11.
-
Шаблоны функций
- Шаблоны функций ведут себя как обычные функции, но могут принимать аргументы разных типов.
- Пример шаблона функции – max(), которая работает с разными типами данных.
- Шаблоны функций экономят место в исходном коде и упрощают чтение кода.
-
Шаблоны классов
- Шаблоны классов предоставляют спецификацию для создания классов на основе параметров.
- Стандартная библиотека C++ содержит множество шаблонов классов, включая контейнеры.
-
Переменные шаблоны
- В C++14 шаблоны могут использоваться для переменных.
-
Нетиповые параметры шаблона
- Создание шаблонов возможно не только для типов, но и для значений.
-
Специализация шаблона
- Компилятор создает специализации шаблона для конкретных наборов аргументов.
- Явная специализация позволяет реализовать специализированную версию функции или класса.
-
Вариативные шаблоны
- В C++11 появились шаблоны с переменным числом аргументов.
-
Псевдонимы шаблонов
- В C++11 введены псевдонимы шаблонов для упрощения использования типов.
-
Сравнение с другими языками
- Шаблоны C++ отличаются от дженериков в Java и C# 1.0, но имеют сходства.
- Дженерики в Ada и .NET 2.0 предшествовали шаблонам C++.
-
Метапрограммирование шаблонов
- Шаблоны используются для выполнения операций с типами, а не для проверки во время выполнения.
- В C++11 появились стандартные библиотечные функции для более гибкого метапрограммирования.
-
Дополнительные ресурсы
- Ссылки на демонстрацию полноты по Тьюрингу шаблонов C++, метапрограммирование и другие темы.