![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
здесь (с) с заранее определенным типом (инт) инициализируется результатом функции, выбранной в результате разрешения перегрузок по двум аргументам.. Это сообщение отредактировал(а) mes - 6.3.2012, 09:44 |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
с этим никто не спорит. есть процесс вывода типа, проводимый компилятором. его может произвести и человек. когда мы пишем auto или вообще не указываем тип (в языках где это допустимо) мы просто ленимся. так же мы ленимся самостоятельно выводить новые факты из существующих фактов и правил, возлагая это на машину вывода (в БЗ, Пролог и пр.), т.е. поручаем машине черновую трудоемкую работу. везде, где отсутствует информация извне, результат заранее определен. только не всегда очевиден ![]() |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
тип будет вычислен по выражению стоящему дальше по тексту .. а раз будет, то на момент определения переменной он еще неизвестен, и подставляется чуточку позже, после того, как разберется с правостоящим выражением ![]() Это сообщение отредактировал(а) mes - 6.3.2012, 09:47 |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
||||
|
||||
mes |
|
||||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
если рассматривать конечную точку процесса, то да.. а взглянуть на компиляцию, как на процесс то, не важно кем делается вывод, человеком и компиляцией, мы можем сказать известен те ли на определенной момент времни или нет.. при этом проблема неизвестности встречалась в С++ и раньше, задолго до auto.. только почему то та неизвестность, никого не смущала ))
сейчас начнут призывать аргументы, что написанно не на одной строчке.. так и в статически типизированных языках auto тоже может быть написано не на одной..
т.е. объявляться с неизветным типом, и приобретать его в момент определения.. в конце концов тип x будет известен и его в любом случае нельзя менять.. Добавлено @ 10:02 неа.. в данном случае речь не о лени.. мы говорим какие правила использовать.. и вот правила как раз и разные для запроса типа и выведения.. Добавлено @ 10:03 ну или переходить на языки, на которых это уже есть )) Добавлено @ 10:08 вот опять.. в выражении "неизвестный тип" сам программист совсем не при чем.. речь о том кто разбирает код.. и встретив новую переменную и запомня ее, разборщик (будь он человек или машина) не может сразу проассоциировать его с типом, а идет дальше изучать след выражение.. Добавлено @ 10:12
так почему нельзя вывести тип правого выражения ? ![]() Это сообщение отредактировал(а) mes - 6.3.2012, 14:31 |
||||||||
|
|||||||||
baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
точнее, мы знаем правила и учитываем их. правила есть и они не меняются. а про различие запроса типа и выведения не оспаривается
два ответа. 1. потому что неограниченная рекурсия 2. можно, если использовать правило приведения типов в выражении + правило приведения неизвестного типа к известному
|
||||
|
|||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
так все таки неизвестного ? ![]() Это сообщение отредактировал(а) mes - 6.3.2012, 11:15 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
![]() а если взглянуть на слово "правило" шире ? ![]() Это сообщение отредактировал(а) mes - 6.3.2012, 14:50 |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
||||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
угу, а неограчиность рекурсиии твердит нам об известности типа ![]() |
|||
|
||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
-------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
k0rvin |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
Шум был не из-за этого, а из-за того, что некоторые утверждали, что "auto x = <expr>" можно однозначно заменить на "decltype(<expr>) x = <expr>". Однако нет.Пардон, пример уже приводили. Это сообщение отредактировал(а) k0rvin - 7.3.2012, 08:45 -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||
|
|||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
просто я не мог поверить, что ты таки мог придраться к этому. ибо да, auto реализован поверх decltype но с иной семантикой. http://liveworkspace.org/code/092676eb3995...319ba83e7b42001 но обратное невозможно. Это сообщение отредактировал(а) boostcoder - 7.3.2012, 09:04 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
я не фантазер и не ясновидец. то, что Вы мне приводили в пример - в с++ невозможно в рамках текущего стандарта. и не известно, изменится ли оно когда-либо. а так да, за примеры спасибо. они мне очень помогли, и главное - сэкономили мое время потраченное на объяснения невозможного ![]() Это сообщение отредактировал(а) boostcoder - 7.3.2012, 09:40 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |