Supongamos que tengo una función que arroja un resultado importante y varios resultados sin importancia. Declaré que para que los resultados se devuelven sin importancia por referencia:Ignorar un resultado de devolución por referencia de una función
int CalculateStuff(int param1, int param2, int& result1, int& result2);
me gustaría llamar a esta función para calcular algunas cosas, pero en el sitio llamado quiero ignorar los resultados sin importancia. Podría hacerlo de la siguiente manera:
...
int dummy1, dummy2;
int result = CalculateStuff(100, 42, dummy1, dummy2);
... // do something with the result
me gustaría considerar otra forma de hacer lo mismo sin la declaración de variables ficticias:
int result = CalculateStuff(100, 42, *new int, *new int);
Esto tiene una pérdida de memoria (inaceptable), pero tiene una ventaja de mostrar mi intención (ignorando los resultados) más claramente que los nombres "ficticios".
Entonces, ¿qué pasaría si yo escribí como sigue:
int result = CalculateStuff(100, 42, auto_ptr(new int).get(), auto_ptr(new int).get());
¿Es legal? ¿Los enteros temporales todavía existirán cuando se ejecute el código de la función? ¿Debo usar unique_ptr
en lugar de auto_ptr
?
(Por favor, no sugieren refactorización mi código, yo probablemente lo hará - pero primero quiero entender cómo funciona esto)
Agregado como un comentario, ya que en realidad no responde su pregunta, pero generalmente declaro una llamada temporal _ y la paso si aparece. "CalculateStuff (100, 42, _, _); parece razonablemente claro. – jcoder