![]() |
|
Модераторы: LSD |
![]()
|
|
||
|
|
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
||||
|
||||
| KelTron |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: нет Всего: 38 |
Именно об этом я и говорю, если это значило то же что и значит я не не правильно тебя понял.
На счёт лямбд, мне кажется пример некорректен, т.к. у функции OrderBy вполне явный тип у параметра. Мы можем написать так:
Но так нет:
Если компилятору известно, значит и программисту известно. Другое дело если ему лень посмотреть, что там функция возвращает... но тогда как он будет работать с чем то ему неизвестным... Хотя по моему я понял, что ты имел ввиду.. Если ты говоришь про то, что тип очень неудобен для восприятия то да, соглашусь, но это не значит, что он неизвестен, всё-таки это разные понятия. Но даже в этом случае auto не избавит от typedef-ов. -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
||||||
|
|||||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
чтоб программисту стало известно, он должен изучить весь контекст, который к тому же со временем ( например с новой версией библиотеки) может измениться
бывает это не столько лень, сколько затратно .. к тому же самому программисту это и не нужно, так чего на это тратить силы ? программисту для работы не нужен реальный тип, ему нужно знать только какой интерфейс поддерживается.
да разные, и в обоих случаях есть польза от автоопределения. |
||||
|
|||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
KelTron, все что надо знать программисту о типе - это то каким концепциям он соответствует. конкретный тип знать не зачем.
неизвестный тип возвращаемый функцией - это значит что он зависит от аргументов функции, от реализации функции и ее зависимостей. на момент написания вызова функции этот тип программисту неизвестен, его можно узнать у компилятора только после того как функция написана. для typedef'ов есть typeof (decltype) |
|||
|
||||
| KelTron |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: нет Всего: 38 |
Да кто с этим спорит..? Похоже мы не понимаем друг друга.. Пара вопросов для уточнения: Разве в определении boost::bind() не указано что оно возвращает, и мы не можем написать ЧтоТо ххх = boost::bind() ?
Но вот это ЧтоТо, возвращаемое boost::bind(), ведь останется прежним? -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
||||||
|
|||||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Проголосовал за добро, но, как и любое "добро", использовать надо с осторожностью.
Это сообщение отредактировал(а) kemiisto - 19.5.2010, 12:33 -------------------- |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
Так естественно голову надо голову иметь, а не пихать _вся повдюду_
это _ЧтоТо_ зависит от того, что биндим и состоит из такой цепочки адаптеров, которую программист в уме и вычислить не сможет http://www.boost.org/doc/libs/1_43_0/libs/bind/bind.html :
Это сообщение отредактировал(а) mes - 19.5.2010, 13:10 |
||||
|
|||||
| Любитель |
|
||||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
Ты путаешь разные вещи. Вывод типов это не только var. Я говорил про вывод типа возвращаемого значения из локальной функции (лямбды в случае шарпа). И тип выводится из контекста использования. Это вполне себе относится к выводу типов. В шарпе вывод типов не столь широк, как возможен в принципе. Напомню, как можно делать в том же немерле:
Dictionary в шарпе - это дженерик-класс, тем не менее мы не указываем явно дженерик параметры, они выводятся из дальнейшего использования. Вообще, в Немерле очень продвинутый движок вывода типов (что впрочем уже спорно, всему есть своя мера). |
||||
|
|||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
неоднозначный вопрос
в каждом случае по-разному -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| KelTron |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: нет Всего: 38 |
На счёт дженериков согласен, не учёл. Но всё равно не то же самое, тут всё-таки более "узкий" вывод..
Т.е. по сути запись вида ЧтоТо ххх = boost::bind() невозможна для смертного и единственный способ это auto xxx = boost::bind()? Как печально.. -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
||||
|
|||||
| mes |
|
||||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
не единственный.. пока нет auto можно использовать boost::function например бустовская реализация концепции foreach : http://www.boost.org/doc/libs/1_42_0/boost/foreach.hpp обратите внимание сколько завязано на auto_any.. а будь в наличие автоопределение типа все выглядило бы гораздо проще да чего далеко ходить вот например обход вектора векторов..
сравните с этим:
хотя конечно еще лучше будет так :
Это сообщение отредактировал(а) mes - 19.5.2010, 17:47 |
||||||||
|
|||||||||
| k0rvin |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
а еще лучше так:
-------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||||
|
|||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
да, но это уже в С++ не затолкнуть.. как в вашем случае отличить какую i использовать внешнюю или новосозданную локальную ? Добавлено через 1 минуту и 31 секунду также не получится указать, как ссылку или как значение рассматривать итератор. |
|||
|
||||
| k0rvin |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
только новосозданную. использовать внешнюю -- дурной тон. как минимум Добавлено через 1 минуту и 12 секунд
и каким же образом auto указывает? -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
Это сообщение отредактировал(а) mes - 29.5.2010, 10:40 |
|||
|
||||
![]()
|
| Правила ведения Религиозных войн | |
|
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Религиозные войны | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |