Re[9]: [trick] C++14 return unnamed structure
От: B0FEE664  
Дата: 12.10.15 16:18
Оценка:
Здравствуйте, Went, Вы писали:

EP>>Не пойму, то есть ты за то чтобы в этом случае auto вообще не использовать? Тогда это ортогонально struct vs tuple.

W>Я просто не могу представить реального случая, где бы подобный подход мог иметь смысл.

Любая функция конвертации строки в структуру или число.

W>Если это обычная функция, возвращающая, например код ошибки, или результат исполнения, который "не поместился" в скалярный тип, то я не вижу смысла пихать определение структуры вовнутрь ее. За сомнительную экономию нескольких идентификаторов и пунктуаций мы получаем:

W>1. Кишки функции наружу.
В каком смысле? То, что определение описано внутри функции, а не снаружи? А typedef key key_type; у std::map — это кишки класса наружу? Нет? Почему?

W>2. Невозможность использовать этот тип где либо еще, объявлять его явно.

Это плюс, а не минус. Это не позволит перепутать результат функции с чем-то ещё.

W>3. Необходимость лезть в реализацию функции для поиска ее возврата.

С кодами int, bool или "не дай бог" errno() легче что-ли?

W>Лучше определить структуру явно в заголовке класса.

Не легче. Это сильно засоряет scope класса бессмысленными типами имеющими отношение только к конкретным функциям.

W>Если же это какое-то значимое данное, состав которого неочевидным образом определяется на момент компиляции тела функции, то без статической рефлексии или замены на туплы, мы просто не будем знать что с ней делать дальше. Поэтому это тоже не вариант.

W>Так в каком же случае это полезно?

Например, функция std::stod вместо бросания исключения могла бы возвращать результат, код конвертации и указатель на константную строку с описанием ошибки.
И каждый день — без права на ошибку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.