Сообщение Re[10]: [trick] C++14 return unnamed structure от 12.10.2015 15:30
Изменено 12.10.2015 15:31 Went
Здравствуйте, BulatZiganshin, Вы писали:
BZ>Здравствуйте, Went, Вы писали:
W>>Я просто не могу представить реального случая, где бы подобный подход мог иметь смысл.
BZ>а пол моему у тебя просто отторжение непривычного. использовать это очень просто:
BZ>
BZ>в результате получаем просто функцию, возвращающую несколько поименованных результатов.
Да. Но при этом:
1. Вынуждены делать функцию инлайн.
2. Не сможем заменить функцию на виртуальную.
3. Не сможем объединить возвращаемый тип с подобными функциями (тут просто просится какой-то struct read_result;}
4. Ограничены одной точкой выхода.
5. Можем получить неочевидые проблемы с выводимыми типами переменных-членов этой структуры.
Но. Опять же — это все до тех пор, пока нет статической рефлексии. Как только оная появится, ценность подобных записей заметно увеличится, и их существование будет оправдано.
BZ>Здравствуйте, Went, Вы писали:
W>>Я просто не могу представить реального случая, где бы подобный подход мог иметь смысл.
BZ>а пол моему у тебя просто отторжение непривычного. использовать это очень просто:
BZ>
BZ>auto extended_fread()
BZ>{
BZ> return {errcode=e, bytes=b};
BZ>}
BZ>main()
BZ>{
BZ> auto r = extended_fread();
BZ> if (r.errcode) {...}
BZ> ptr += r.bytes;
BZ>}
BZ>BZ>в результате получаем просто функцию, возвращающую несколько поименованных результатов.
Да. Но при этом:
1. Вынуждены делать функцию инлайн.
2. Не сможем заменить функцию на виртуальную.
3. Не сможем объединить возвращаемый тип с подобными функциями (тут просто просится какой-то struct read_result;}
4. Ограничены одной точкой выхода.
5. Можем получить неочевидые проблемы с выводимыми типами переменных-членов этой структуры.
Но. Опять же — это все до тех пор, пока нет статической рефлексии. Как только оная появится, ценность подобных записей заметно увеличится, и их существование будет оправдано.
Здравствуйте, BulatZiganshin, Вы писали:
BZ>в результате получаем просто функцию, возвращающую несколько поименованных результатов.
Да. Но при этом:
1. Вынуждены делать функцию инлайн.
2. Не сможем заменить функцию на виртуальную.
3. Не сможем объединить возвращаемый тип с подобными функциями (тут просто просится какой-то struct read_result;}
4. Ограничены одной точкой выхода.
5. Можем получить неочевидые проблемы с выводимыми типами переменных-членов этой структуры.
Но. Опять же — это все до тех пор, пока нет статической рефлексии. Как только оная появится, ценность подобных записей заметно увеличится, и их существование будет оправдано.
BZ>в результате получаем просто функцию, возвращающую несколько поименованных результатов.
Да. Но при этом:
1. Вынуждены делать функцию инлайн.
2. Не сможем заменить функцию на виртуальную.
3. Не сможем объединить возвращаемый тип с подобными функциями (тут просто просится какой-то struct read_result;}
4. Ограничены одной точкой выхода.
5. Можем получить неочевидые проблемы с выводимыми типами переменных-членов этой структуры.
Но. Опять же — это все до тех пор, пока нет статической рефлексии. Как только оная появится, ценность подобных записей заметно увеличится, и их существование будет оправдано.