- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
int b;
int c();
template<class u, class v>
struct IsSameType
{
enum {r=0};
};
template<class u>
struct IsSameType<u,u>
{
enum {r=1};
};
//...
cout<<IsSameType<decltype(b),decltype(c())>::r<<endl;
cout<<IsSameType<decltype(b),decltype((b))>::r<<endl;
cout<<IsSameType<decltype(c()),decltype((b))>::r<<endl;
Сегодня увидим новую плюшку, что нам подарил новый стандарт С++0х.
1)Что на экране получим после выполнения данной программы?
2)Какие реально decltype возвращает типы в данных случаях?
Желательно ответить на оба вопроса, не компилируя. ^_^
CPPGovno 21.08.2011 19:54 # 0
*Ответ не знаю(*
CPPGovno 21.08.2011 20:02 # 0
Противоречие компилятора майкрософта самому себе поражает и я до сих пор не знаю, что там скрывается за типами, возвращаемыми decltype((
Kirinyale 21.08.2011 20:06 # 0
Ответ нашёл, попытавшись скомпилировать следующее:
decltype((b)) v2 = 0;
Осталось найти, что и где об этом говорит стандарт.
CPPGovno 21.08.2011 20:07 # −1
Kirinyale 21.08.2011 20:08 # +3
CPPGovno 21.08.2011 20:14 # −2
CPPGovno 22.08.2011 00:40 # −1
macGovno 21.08.2011 20:18 # +2
а почитать можно для начала википидию.
http://en.wikipedia.org/wiki/Decltype#Semantics
Kirinyale 21.08.2011 20:24 # +1
Офигеть интуитивность. Следующие строчки не эквивалентны, если foo() возвращает ссылку:
auto v = foo(); // копирование значения
decltype(foo()) v = foo(); // сохранение ссылки
ЭТО интуитивно?..
SmackMyBitchUp 21.08.2011 20:40 # +1
Kirinyale 21.08.2011 20:43 # +1
macGovno 21.08.2011 21:00 # 0
Kirinyale 21.08.2011 21:04 # 0
SmackMyBitchUp 21.08.2011 21:25 # 0
Хотя чую я, что уж хамяки - стандарт сам говна подкинет, вернее авторы.
SmackMyBitchUp 21.08.2011 20:46 # +2
CPPGovno 21.08.2011 23:02 # 0
roman-kashitsyn 21.08.2011 22:44 # 0
Kirinyale 21.08.2011 23:10 # +4
roman-kashitsyn 22.08.2011 11:42 # +4
Kirinyale 22.08.2011 12:05 # +3
Да я только за. Чем больше людей сами понимают свои желания, предпочтения и ограничения - тем меньше за ними потом разгребать.
Да, и на С++ тоже вполне можно писать просто и понятно даже для не особо посвящённых. Только 90% возможностей языка при этом использоваться не будут. И совсем не факт, что такая "понятность" пойдёт в плюс удобству и простоте поддержки.
Lure Of Chaos 21.08.2011 23:13 # +3
Kirinyale 21.08.2011 23:44 # +1
CPPGovno 21.08.2011 23:50 # 0
Kirinyale 21.08.2011 23:55 # +1
SmackMyBitchUp 22.08.2011 00:26 # +2
Kirinyale 22.08.2011 00:29 # +1
roman-kashitsyn 23.08.2011 09:08 # +2
CPPGovno 23.08.2011 09:10 # 0
roman-kashitsyn 23.08.2011 09:47 # +1
Вдруг вы ещё не видели :)
roman-kashitsyn 22.08.2011 08:48 # 0
Lure Of Chaos 22.08.2011 10:35 # 0
roman-kashitsyn 22.08.2011 10:50 # 0
Govnoeb 22.08.2011 10:49 # +1
компилиться, так что мы все спасены!
ваш, КО
Kirinyale 22.08.2011 10:53 # +2
CPPGovno 25.08.2011 08:39 # −4
- Это тот, где переменная, объявленная в заголовке цикла остаётся видна после него, а шаблоны настолько кастрированны, что на них даже факториал не напишешь? Ты мазохист, чтоли? Хотя что я спрашиваю, ты же программируешь на С++, всё и так ясно.
guest8 09.04.2019 11:22 # −999