Quería escribir una función con una lista de argumentos variables. Quiero explorar mis opciones Estoy bastante seguro de que encontré una clase de plantilla de impulso que fue diseñada para este propósito, pero no puedo pensar en el nombre. ¿Alguien me puede decir? o lo soñé! Gracias ¿Lista de argumentos de variables con impulso?
8
A
Respuesta
7
Si sólo necesita aceptar un recuento variable de argumentos del mismo tipo, teniendo un recipiente sería lo más común de hacerlo. Creación del contenedor sin embargo, puede ser aliviado mediante Boost.Assign:
void f(const std::vector<int>& vec) {}
f(boost::assign::list_of(1)(2)(3)(4));
Alternativamente, usted puede ir para la sobrecarga de operadores (por ejemplo, de operator()
o operator<<
) usted mismo, similar al enfoque adoptado por las corrientes de la biblioteca estándar:
op() << arg1 << arg2 << arg3;
Si realmente desea proporcionar una función variable de tipo seguro (sin utilizar las funciones de C++ 0x), Boost.Preprocessor puede ayudar. Un ejemplo genérico:
#define OUT(z, n, name) << name ## n
#define MAKE_FUNC(z, n, unused) \
template<class T BOOST_PP_ENUM_TRAILING_PARAMS(n, class T)> \
void func(T t BOOST_PP_ENUM_TRAILING_BINARY_PARAMS(n, T, t)) { \
std::cout << t BOOST_PP_REPEAT(n, OUT, t) << std::endl; \
}
BOOST_PP_REPEAT(9, MAKE_FUNC, ~) // generates func() versions taking 1-10 arguments
func(1, "ab", 'c'); // prints "1abc"
Cuestiones relacionadas
- 1. Métodos con lista de argumentos variables
- 2. Desempaquetar la lista de argumentos con la plantilla de variables
- 3. Procedimiento almacenado de MySQL con lista de argumentos variables
- 4. funciones abstractas y argumentos variables lista
- 5. jQuery $ .when() con argumentos variables
- 6. Pasando la lista de argumentos variables a sprintf()
- 7. ¿hay alguna manera de escribir macros con una lista de argumentos variables en C++ visual?
- 8. Funciones con argumentos variables en javascript/jQuery
- 9. Scala: ¿Cómo puedo definir una función anónima con una lista de argumentos variables?
- 10. funciones de plantillas de C++ con argumentos variables
- 11. impulso :: método de plantilla de clase enable_if
- 12. de plantillas C++ Clase constructor con argumentos variables
- 13. Cómo usar los argumentos variables con OptionParser de Ruby
- 14. Compilación de impulso con zlib
- 15. longitud de va_list cuando se usan argumentos de lista de variables?
- 16. Filtrado de la lista de Python con argumentos
- 17. Lista de argumentos de longitud variable con argumento predeterminado?
- 18. Hilos impulso con CLR
- 19. verificando una distribución de probabilidad con sumas variables de argumentos a 1
- 20. ¿Cómo desempaquetar una lista con menos variables?
- 21. Pass lista de Python a C++ extensión utilizando impulso pitón
- 22. Llamar a una función con lista de argumentos en python
- 23. Scala implícita con la lista de argumentos variable
- 24. argumentos variables en funciones de reenvío en D
- 25. Llamar a un constructor desde argumentos variables con PHP
- 26. Argumentos con nombre como variables locales en Ruby
- 27. Plantillas variables, reenvío perfecto a funciones con argumentos predeterminados
- 28. ¿Cómo pasar un puntero a una función con argumentos variables?
- 29. C Programación: Lista de argumentos de la variable de reenvío
- 30. VBA lista de argumentos de funciones seleccionar
¿Se refiere a la cantidad de argumentos variables pero un tipo, o también tipos arbitrarios? –
No estoy seguro de qué es exactamente la biblioteca proporcionada, no puedo reubicarla, supongo que fue una especie de mejora sobre va_list - posiblemente escriba safety – aukm
¿Su función solo necesita tomar argumentos de un tipo o no? –