Параметры шаблона
- 1 year ago
- 0
- 0
Пакет параметров шаблона
(
англ.
template parameter pack
) в языке программирования
C++
— параметр шаблонной функции или класса, состоящий из произвольного количества разнородных элементов. Представляет собой краткую запись гетерогенного набора аргументов
вариативного шаблона
, определяемую с помощью многоточия
...
.
Эта языковая возможность была введена в синтаксис начиная со стандарта C++11 .
Синтаксис объявления вариативного шаблона
tuple
с пакетом параметров
Values
:
template<typename... Values>
class tuple;
В качестве элементов пакета параметров шаблона могут выступать типы данных (типовые параметры), параметры, не являющиеся типами (нетиповые параметры) и шаблонные параметры шаблонов .
Когда в пакете параметров определяются его элементы, он разворачивается в последовательность из нулевого или большего числа аргументов .
Поведение пакета параметров и его значение для компилятора эквивалентно обычным параметрам, однако он рассматривается как совокупность любого количества своих элементов. Пакеты параметров, которые не являются обобщёнными типами, могут представлять композицию любого числа аргументов соответствующего им типа. В первичных классах шаблонов, и допускается иметь только один пакет параметров шаблона. Если он присутствует, то его позиция в списке аргументов обязательно должна быть последней. В шаблонах функций ограничения не такие строгие: допускается использование множественных пакетов, разрешено их произвольное расположение, лишь бы каждый аргумент шаблона после пакета мог быть или имел значение по умолчанию .
Для определения количества элементов в списке пакета параметров шаблона предназначен оператор
sizeof...
, который был введён стандартом языка
C++11
. Начиная со стандарта
C++17
имеется возможность
свёртки
пакета параметров — массового применения любой бинарной операции ко всем его элементам
.