Здравствуйте, BulatZiganshin, Вы писали: BZ>в результате получаем просто функцию, возвращающую несколько поименованных результатов.
Да. Но при этом:
1. Вынуждены делать функцию инлайн.
2. Не сможем заменить функцию на виртуальную.
3. Не сможем объединить возвращаемый тип с подобными функциями (тут просто просится какой-то struct read_result;).
4. Ограничены одной точкой выхода.
5. Можем получить неочевидые проблемы с выводимыми типами переменных-членов этой структуры.
Но. Опять же — это все до тех пор, пока нет статической рефлексии. Как только оная появится, ценность подобных записей заметно увеличится, и их существование будет оправдано.