Paquete de opciones de plantilla

Un paquete de parámetros de plantilla en el lenguaje de programación C ++ es un   parámetro de una función o clase de plantilla, que consta de un número arbitrario de elementos heterogéneos. Es una notación abreviada para un conjunto heterogéneo de argumentos de plantilla variados , definidos con puntos suspensivos [1] [2] . ...

Esta característica del lenguaje se ha introducido en la sintaxis desde el estándar C++11 [3] .

Sintaxis

La sintaxis para declarar una plantilla de variante tuplecon un paquete de parámetros es Values:

plantilla < nombre de tipo ... valores > tupla de clase ;

Los elementos de un paquete de parámetros de plantilla pueden ser tipos de datos (parámetros de tipo), parámetros que no son de tipo (parámetros que no son de tipo) y parámetros de plantilla de plantilla [4] .

Semántica

Cuando un paquete de opciones define sus elementos, se expande en una secuencia de cero o más argumentos [5] .

El comportamiento del paquete de opciones y su significado para el compilador es equivalente a las opciones normales, pero se trata como la colección de cualquier número de sus elementos. Los paquetes de parámetros que no son tipos genéricos pueden representar la composición de cualquier número de argumentos de su tipo correspondiente. Las clases de plantillas primarias, las plantillas de alias y las plantillas variables solo pueden tener un paquete de parámetros de plantilla. Si está presente, su posición en la lista de argumentos debe ser la última. En las plantillas de funciones, las restricciones no son tan estrictas: se permiten múltiples paquetes, se permite su disposición arbitraria, siempre que cada argumento de la plantilla después del paquete se pueda inferir o tenga un valor predeterminado [1] .

Para determinar el número de elementos en la lista de paquetes de parámetros de la plantilla, se utiliza el operador sizeof..., que fue introducido por el estándar de lenguaje C++11 [6] . Comenzando con el estándar C++17 , es posible colapsar el paquete de parámetros: la aplicación masiva de cualquier operación binaria a todos sus elementos [7] .

Fuentes

  • D. Vandevoerd, N. Josattis, D. Gregor. Plantillas C++. Referencia del desarrollador = Plantillas de C++. La guía completa. - 2do. - San Petersburgo.  : "Alfa-libro", 2018. - 848 p. - ISBN 978-5-9500296-8-4 .
  • M.Olsson. Referencia de sintaxis rápida de C++17: una guía de bolsillo para el lenguaje, las API y la biblioteca. - Tercera edicion. - Apress, 2018. - ISBN 978-1-4842-3599-7 . -doi : 10.1007 / 978-1-4842-3600-0 .

Notas

  1. 1 2 Vandewoerd, Josattis, Gregor, 2018 , Paquetes de parámetros de plantilla, p. 231.
  2. Olsson, 2018 , Plantillas Variadic, p. 168.
  3. Paquete de parámetros (desde C++ 11) Archivado el 11 de noviembre de 2020 en Wayback Machine en.cppreference.com
  4. Vandewoerd, Josattis, Gregor, 2018 , Opciones de plantilla, p. 227.
  5. Vandewoerd, Josattis, Gregor, 2018 , Patrones variables, p. 244.
  6. Vandewoerd, Josattis, Gregor, 2018 , The sizeof... operator, p. 91.
  7. Vandewoerd, Josattis, Gregor, 2018 , Expresiones de convolución, p. 92.