2011-11-01 9 views

Respuesta

12

parcialmente citando el FDIS, §14.5.3:

Un parámetro paquete plantilla es un parámetro de plantilla que acepta cero o más argumentos de plantilla.

Un parámetro paquete función es un parámetro función que acepta cero o más argumentos de la función.

Un paquete parámetro es o bien un paquete de parámetro de plantilla o un paquete de parámetro de función.

Una expansión paquete consiste en un modelo y una elipsis, la instanciación de que produce cero o más instancias del patrón en una lista.

Así que en tu ejemplo,

  • typename... Args es un paquete de parámetros plantilla (y por consiguiente también un paquete parámetro)
  • Args... params es un paquete de parámetros función (y por consiguiente también un paquete de parámetros )
  • sizeof...(Args) es un paquete de expansión donde Args es el patrón (un identificador en este contexto).
+1

Y también, 'typename ... Args' es un * paquete de parámetros de plantilla *, pero no es una * expansión de paquete *. En 'plantilla clase A {plantilla clase C {}; plantilla clase ... E> clase F {}; }; ', el' B' es un * paquete de parámetros de plantilla *. El 'Args ... B' es su declaración que también es una * expansión del paquete * del patrón' Args B', expandiéndose a una * template-parameter-list *. 'plantilla clase ... E' también es una expansión de paquete de patrón' plantilla clase E'. –

+1

@ JohannesSchaub-litb ¿podría publicar este comentario como respuesta? Ciertamente es lo suficientemente detallado. – Motti

+0

¿Puedes explicar tu cuarto punto, es decir, el patrón, me refiero a cómo funciona ese patrón? y en qué parte de C++ funciona :) –

Cuestiones relacionadas