Я пытаюсь завязать кортежи (спасибо @litb), а общее предложение для их использования - для функций, возвращающих значение > 1.
Это то, что я обычно использовал для структуры, и я не могу понять преимущества кортежей в этом случае - это кажется склонным к ошибкам подходом к терминально ленивому.
Заимствуя пример, я бы использовал этот
struct divide_result {
int quotient;
int remainder;
};
Используя кортеж, у вас будет
typedef boost::tuple<int, int> divide_result;
Но, не читая код функции, которую вы вызываете (или комментарии, если вы достаточно глупы, чтобы доверять им), вы не знаете, какой int является частным и наоборот. Это похоже на...
struct divide_result {
int results[2]; // 0 is quotient, 1 is remainder, I think
};
... который не наполнил бы меня уверенностью.
Итак, каковы преимущества кортежей над структурами, которые компенсируют двусмысленность?