¿Cuál es la sintaxis `typename…` en las plantillas de C++?
Acabo de encontrar este fragmento de código en un archivo de Programa (C++):
$template <typename blah, typename… Args>
const <some-type> bof(<some-parameters>, Args&&… args) const
{
return breck(std::forward<Args>(args)…);
}$
Me pregunto:
1) ¿qué son los tres puntos después de typename
?
2) Parece intuitivamente que de esta manera podemos pasar múltiples argumentos. ¿Hay algún término/referencia oficial para ello?
davy.ai
1) Los tres puntos después del
typename
se llaman plantillas variádicas. Esto significa que la función puede tomar cualquier número de argumentos de cualquier tipo después del primer parámetrotypename
. El paquete de parámetrosArgs
representa todos los argumentos adicionales pasados a la función.2) Sí, con la ayuda de las plantillas variádicas, podemos pasar múltiples argumentos de cualquier tipo a una función. Esta característica se introdujo en C++11 para proporcionar una forma más flexible y genérica de escribir código. La referencia oficial para las plantillas variádicas se puede encontrar en el estándar de C++ en la sección “14.5.3 Plantillas variádicas”.