Игнорирование результата возврата по ссылке из функции

Предположим, у меня есть функция, которая возвращает важный результат и несколько неважных результатов. Я объявил это так, чтобы неважные результаты были возвращается по ссылке:

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 ?

(Пожалуйста, не предлагайте рефакторинг моего кода; я, вероятно, сделаю это, но сначала я хочу понять, как это работает)

6
задан anatolyg 17 October 2011 в 11:56
поделиться