2010-05-05 15 views

Respuesta

7

De Variadic Templates (Revision 3) (N2080=06-0150), página 6:

Aunque no es estrictamente necesario (podemos implementar count sin esta característica), el control de la longitud de un paquete de parámetro es una operación común que merece una sintaxis simple. Además, esta operación puede ser necesaria para las razones de verificación de tipos cuando las plantillas variadas se combinan con conceptos; ver la Sección 3.3.

(Sección 3.3 habla de conceptos que es ahora irrelevante.)

+1

'' sizeof ... también se puede aplicar igualmente bien a la plantilla y los parámetros de la función paquetes. Entonces 'sizeof ... (T)' y 'sizeof ... (t)' funcionan igual de bien. Una solución basada en una biblioteca funcionaría con paquetes de parámetros de plantilla o función, pero no con ambos, creo. Porque una expansión produce una secuencia de tipos, y la otra expansión produce una secuencia de expresiones. Tal vez escribirlo como 'plantilla struct count;' y luego pasar el paquete como 'count ' podría funcionar. Dado que 'sizeof' puede manejar ambos tipos y expresiones que parecen funcionar, pero es claramente más feo :) –

4

sizeof... es solo azúcar, creo.

sizeof es de hecho el corazón del lenguaje como es ..., y aunque podría existir una función countof ya tenemos sizeof y ... reservados por lo que bien podría hacer que sea conveniente para obtener el recuento de esa manera.

Por el contrario, si sizeof y ... no se reservaron, la idea de agregar tal cosa probablemente habría fallado porque las nuevas palabras clave tienden a ser mal vistas. (Cuanto menos, mejor.)

Cuestiones relacionadas