Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Указатели на неименованные перечисления, где-нибудь использует или для "красоты" 
V
    Опции темы
k0rvin
Дата 4.3.2012, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(volatile @ 4.3.2012,  18:07)
В любом месте где стоит ауто, компилер точно знает какой именно тип туда нужно поставить.
Причем знает это он в момент компиляции.

Да, но он вычисляет (выводит) его (тип) из выражения справа например. Это позволяет не менять часть кода, типы которого зависят от других типов и их сложно определить однозначно. + уменьшает количество синтаксического мусора.


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
boostcoder
Дата 4.3.2012, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(k0rvin @  4.3.2012,  18:08 Найти цитируемый пост)
Хвала яйцам, кто-то это понял наконец-то.

т.е. ты целую страницу разводил демагогию из-за того что auto несколько изменяет семантику decltype, и просто ухмылялся что мы "не разглядели моську"?
минусовать тебя за это.

Добавлено @ 18:19
и разумеется ты не видел этого:
Цитата(boostcoder @  4.3.2012,  15:30 Найти цитируемый пост)
auto i = expr;
// ->
decltype(expr) i = expr;



Это сообщение отредактировал(а) boostcoder - 4.3.2012, 18:26
PM WWW   Вверх
volatile
Дата 4.3.2012, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(k0rvin @ 4.3.2012,  18:08)
Цитата(volatile @ 4.3.2012,  18:07)
k0rvin, просто у auto и decltype разная семантика.

Хвала яйцам, кто-то это понял наконец-то.

k0rvin, ну так и нужно было говорить именно так, согласитесь что:
Цитата(k0rvin @  4.3.2012,  14:53 Найти цитируемый пост)
auto же вычисляет тип выражения, тип которого, заранее неизвестен.

не совсем то, с чем можно согласиться...  smile 
PM MAIL   Вверх
k0rvin
Дата 4.3.2012, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(boostcoder @ 4.3.2012,  18:11)
без decltype не существовало бы auto. auto реализован "поверх" decltype, с немного другой семантикой. но вывод типов - это decltype.

Это не вывод типов. Decltype требует явного указания выражения, от которого брать тип. Причем тип этого выражения должен быть явно определен.


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
boostcoder
Дата 4.3.2012, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(k0rvin @  4.3.2012,  18:27 Найти цитируемый пост)
Decltype требует явного указания выражения, от которого брать тип.

повторю в третий раз:
Цитата(boostcoder @  4.3.2012,  18:18 Найти цитируемый пост)
auto i = expr;
// ->
decltype(expr) i = expr;


PM WWW   Вверх
k0rvin
Дата 4.3.2012, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(boostcoder @ 4.3.2012,  18:18)
Цитата(k0rvin @  4.3.2012,  18:08 Найти цитируемый пост)
Хвала яйцам, кто-то это понял наконец-то.

т.е. ты целую страницу разводил демагогию из-за того что auto несколько изменяет семантику decltype, и просто ухмылялся что мы "не разглядели моську"?
минусовать тебя за это.

Добавлено @ 18:19
и разумеется ты не видел этого:
Цитата(boostcoder @  4.3.2012,  15:30 Найти цитируемый пост)
auto i = expr;
// ->
decltype(expr) i = expr;

Мда. Еще недавно ты не понимал как работает код на первой странице...
Рекомендую переделать следующий код, чтобы он был без auto, и подумать, что будет с кодом проекта, порядка так 100к строк от подобной переделки.
Код

#include <iostream>

template<typename T>
T add (T x, T y) {
    return x + y;
}

int main () {
    auto x = add<int>(1, 2);
    std::cout << x << std::endl;
    return 0;
}


Добавлено @ 18:49
Цитата(boostcoder @ 4.3.2012,  18:31)
Цитата(k0rvin @  4.3.2012,  18:27 Найти цитируемый пост)
Decltype требует явного указания выражения, от которого брать тип.

повторю в третий раз:
Цитата(boostcoder @  4.3.2012,  18:18 Найти цитируемый пост)
auto i = expr;
// ->
decltype(expr) i = expr;

Это и есть явное указание выражения. Так что ты сказать хотел?

Это сообщение отредактировал(а) k0rvin - 4.3.2012, 18:50


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
boostcoder
Дата 4.3.2012, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(k0rvin @  4.3.2012,  18:48 Найти цитируемый пост)
Это и есть явное указание выражения.

так вот компилятор делает тоже самое. неявно. я об этом в самом начале написал. специально для тебя объяснил это. чтоб исключить недопонимание.
user posted image
ты в танке?


Это сообщение отредактировал(а) boostcoder - 4.3.2012, 18:59
PM WWW   Вверх
mes
Дата 4.3.2012, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



boostcoder, если быть точным, то не разворачивает.. auto и decltype реализуются дополняя друг друга , а не одно над другим..

Добавлено через 1 минуту и 57 секунд
если взять ваш пример то
 
Цитата(k0rvin @  4.3.2012,  17:48 Найти цитируемый пост)
auto i = expr;
// ->
decltype(expr) i = expr;

то по сути правильно :
Код


auto i = expr;
// ->
auto i = expr -> decltype(expr);


Добавлено через 3 минуты и 52 секунды
при том на новом стиле записи функций это явно проступает
Код

auto f () ->decltype(..)


Добавлено через 5 минут и 22 секунды
т.е. auto и decltype два рычага одного механизма, а не один и тот же рычаг под разным соусом smile



--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 4.3.2012, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



mes, называйте как угодно.
цель одна?
auto выводит тип?

Добавлено через 5 минут и 15 секунд
Цитата(mes @  4.3.2012,  20:17 Найти цитируемый пост)
то по сути правильно

нет. auto у нас нет. есть decltype и обертка над ним с несколько иной семантикой, реализующая auto.

зы
залезу я все же на stackoverflow...
PM WWW   Вверх
mes
Дата 4.3.2012, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  4.3.2012,  19:41 Найти цитируемый пост)
auto выводит тип?

нет, она говорит что для этого выражения тип будет определен позже smile
"позже" это не рантайм )) 



--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 4.3.2012, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  4.3.2012,  21:14 Найти цитируемый пост)
нет, она говорит что для этого выражения тип будет определен позже

ок.

тогда, какую же роль выполняет auto в этом примере, и справедлив ли предполагаемый мной разворот auto?:
Цитата(mes @  4.3.2012,  20:17 Найти цитируемый пост)
auto i = expr;
// ->
decltype(expr) i = expr;


и, что же на самом деле, означает выражение?:
Код

auto a_ptr = new auto(a);

PM WWW   Вверх
mes
Дата 4.3.2012, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



разница хороша видна на примере std::vector<auto> = f ();
куда засунуть тут declexpr ?





--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 4.3.2012, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  4.3.2012,  21:21 Найти цитируемый пост)
std::vector<auto> = f ();

а этот код разве должен компилится?
http://liveworkspace.org/code/fa66874e2d85...5d7ae138ce15e71
PM WWW   Вверх
mes
Дата 4.3.2012, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  4.3.2012,  20:19 Найти цитируемый пост)
, и справедлив ли предполагаемый мной разворот auto?:

не совсем, ибо упускается из виду важный механизм о котором и говорил korvin.. умение определять тип , по выражению , которое определится позже.. 



--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 4.3.2012, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



зато с decltype все в порядке: http://liveworkspace.org/code/81fea29a4f58...a1711b4de18e78e
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0975 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.