Interested Article - Пакет параметров шаблона

Пакет параметров шаблона ( англ. template parameter pack ) в языке программирования C++ — параметр шаблонной функции или класса, состоящий из произвольного количества разнородных элементов. Представляет собой краткую запись гетерогенного набора аргументов вариативного шаблона , определяемую с помощью многоточия ... .

Эта языковая возможность была введена в синтаксис начиная со стандарта C++11 .

Синтаксис

Синтаксис объявления вариативного шаблона tuple с пакетом параметров Values :

template<typename... Values>
class tuple;

В качестве элементов пакета параметров шаблона могут выступать типы данных (типовые параметры), параметры, не являющиеся типами (нетиповые параметры) и шаблонные параметры шаблонов .

Семантика

Когда в пакете параметров определяются его элементы, он разворачивается в последовательность из нулевого или большего числа аргументов .

Поведение пакета параметров и его значение для компилятора эквивалентно обычным параметрам, однако он рассматривается как совокупность любого количества своих элементов. Пакеты параметров, которые не являются обобщёнными типами, могут представлять композицию любого числа аргументов соответствующего им типа. В первичных классах шаблонов, и допускается иметь только один пакет параметров шаблона. Если он присутствует, то его позиция в списке аргументов обязательно должна быть последней. В шаблонах функций ограничения не такие строгие: допускается использование множественных пакетов, разрешено их произвольное расположение, лишь бы каждый аргумент шаблона после пакета мог быть или имел значение по умолчанию .

Для определения количества элементов в списке пакета параметров шаблона предназначен оператор sizeof... , который был введён стандартом языка C++11 . Начиная со стандарта C++17 имеется возможность свёртки пакета параметров — массового применения любой бинарной операции ко всем его элементам .

Источники

  • Д. Вандевурд, Н. Джосаттис, Д. Грегор. Шаблоны C++. Справочник разработчика = C++ Templates. The Complete Guide. — 2-е. — СПб. : «Альфа-книга», 2018. — 848 с. — ISBN 978-5-9500296-8-4 .
  • M. Olsson. C++17 Quick Syntax Reference: A Pocket Guide to the Language, APIs and Library. — Third Edition. — Apress, 2018. — ISBN 978-1-4842-3599-7 . — doi : .

Примечания

  1. , Пакеты параметров шаблонов, с. 231.
  2. , Variadic Templates, p. 168.
  3. от 11 ноября 2020 на Wayback Machine en.cppreference.com
  4. , Параметры шаблонов, с. 227.
  5. , Вариативные шаблоны, с. 244.
  6. , Оператор sizeof..., с. 91.
  7. , Выражения свертки, с. 92.
Источник —

Same as Пакет параметров шаблона