Предположим, у меня есть функция, которая возвращает важный результат и несколько неважных результатов.Я объявил это так, что неважные результаты возвращаются по ссылке:
int CalculateStuff(int param1, int param2, int& result1, int& result2);
Я хотел бы вызвать эту функцию, чтобы вычислить некоторые вещи, но на сайте вызова я хочу игнорировать неважные результаты.Я мог бы сделать это следующим образом:
...
int dummy1, dummy2;
int result = CalculateStuff(100, 42, dummy1, dummy2);
... // do something with the result
Я хотел бы рассмотреть другой способ сделать то же самое без объявления фиктивных переменных:
int result = CalculateStuff(100, 42, *new int, *new int);
Это имеет утечку памяти (неприемлемо),но имеет преимущество в том, что мое намерение (игнорирование результатов) более четко, чем «фиктивные» имена.
Итак, что произойдет, если я напишу это следующим образом:
int result = CalculateStuff(100, 42, auto_ptr(new int).get(), auto_ptr(new int).get());
это законно?Будут ли существовать временные целые числа при выполнении кода функции?Должен ли я использовать unique_ptr
вместо auto_ptr
?
(Пожалуйста, не предлагайте рефакторинг моего кода; я, вероятно, буду - но сначала я хочу понять, как это работает)