Ya conozco la forma stdarg.h
de tener una función con argumentos de variables en C++ como se describe here por ejemplo. También sé C++ 11 estándar tiene plantillas variadic como se explica here.Una función con número variable de argumentos con tipos conocidos, el camino de C++ 11
Pero en los dos esquemas mencionados anteriormente no sabemos (y no podemos forzar) los tipos de argumento en tiempo de compilación afaik. Lo que estoy buscando es pasar argumentos de tipos conocidos a una función. Creo que esto se puede hacer porque lo leí here:
plantillas variadic, que también pueden ser utilizados para crear las funciones que toman un número variable de argumentos, son a menudo la mejor opción, ya que no imponen restricciones a la tipos de argumentos, no realiza promociones integrales y de punto flotante, y son de tipo seguro.
¿Es posible? Si es así, ¿cómo puedo hacer esto?
Creo que fue todo sobre mi malentendido. Sabía de la segunda manera, pero siempre pensé que no había control sobre el tipo de parámetros. Esto no es verdad. porque la función toma un primer parámetro de un tipo conocido (cadena aquí), está forzosamente implícitamente tener sus parámetros de ese tipo. Gracias. – melmi
Es posible que desee mover primero la segunda caja de códigos. Es una muy buena solución al problema, mientras que la versión 'initializer_list' no lo es. Iba a publicar algo grande y complejo con SFINAE y tal, pero esto es mucho más razonable. –
@nosid en realidad puede evitar el uso de llaves si se mezclan tanto std :: initializer_list como el enfoque de plantilla variadic, al crear una envoltura de plantilla variadica alrededor de la versión std :: initializer_list, como esta: [ver en coliru] (http: //coliru.stacked-crooked.com/a/4baef67192a0310c). –