Есть ли предпочтительный способ возврата нескольких значений из функции С++? Например, представьте себе функцию, которая делит два целых числа и возвращает как фактор, так и остаток. Один из способов, который я обычно вижу, - использовать ссылочные параметры:
void divide(int dividend, int divisor, int& quotient, int& remainder);
Вариант состоит в том, чтобы вернуть одно значение и передать другое через опорный параметр:
int divide(int dividend, int divisor, int& remainder);
Другим способом было бы объявить структуру, содержащую все результаты, и вернуть ее:
struct divide_result {
int quotient;
int remainder;
};
divide_result divide(int dividend, int divisor);
Является ли один из этих способов вообще предпочтительным, или есть другие предложения?
Изменить: в коде реального мира может быть более двух результатов. Они также могут быть разных типов.