
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.21] |
![]() |
|
Страницы: (78) « Первая ... 11 12 [13] 14 15 ... 77 78 ( Перейти к последнему сообщению ) |
Сообщ.
#181
,
|
|
|
Хех. Кто хочет попробовать новые фишки стандарта в исполнении от Microsoft - качайте Microsoft Visual Studio 2010 Community Technology Preview. Обещают лямбды, auto, static assert. Более детальной информации по нововведениям пока найти не могу.
Добавлено Эээ... Забыл предупредить. Качать придется от половины до семи гигов, т. к. CTP идет в виде образа для Virtual PC. ![]() |
Сообщ.
#182
,
|
|
|
Собственно, в соседней теме подсказали источник подробностей:
http://blogs.msdn.com/vcblog/archive/2008/...c10-part-1.aspx |
Сообщ.
#183
,
|
|
|
Кстати, по поводу лямбд в gcc. На самом деле, уже не так плохо:
Цитата 1. Lambda expressions can be passed to function templates, and are usable with the std::CallableN class of concepts. 2. A lambda function can be defined wherever a primary-expression is expected. 3. Default capture allows a lambda function to use external variables without first declaring them. An equals sign (=) means to store such captures by-copy; an ampersand (&) means by-reference. 4. However, each capture and its storage mechanism may be explicitly declared. In this context, an unadorned name means by-copy; an ampersand (&) means by-reference. 5. Initializer expressions, an extension to the proposal, are supported. 6. Argument types must be explicitly annotated. 7. The body must be a compound-statement. Additional features include: * When used inside a member function, a lambda o can capture this explicitly, or by default when it uses direct or indirect references to class members. o has private access to the class. Bugs * Return type deduction is currently broken. * Although they can appear within templates, lambda functions may not be used with dependent types. Взято отсюда: http://parasol.tamu.edu/groups/pttlgroup/lambda/ |
Сообщ.
#184
,
|
|
|
Цитата It has been suggested to (re)use the keyword typedefas done in the paper [4] to introduce template aliases: template<class T> typedef std::vector<T, MyAllocator<T> > Vec; That notation has the advantage of using a keyword already known to introduce a type alias. However, it also displays several disavantages among which the confusion of using a keyword known to introduce an alias for a type-name in a context where the alias does not designate a type, but a template; Vec is not an alias for a type, and should not be taken for a typedef-name. The name Vec is a name for the family std::vector< , MyAllocator< > > where the bullet is a placeholder for a type-name. Consequently we do not propose the typedef syntax. On the other hand the sentence template<class T> using Vec = std::vector<T, MyAllocator<T> >; can be read/interpreted as: from now on, I'll be using Vec<T> as a synonym for std::vector<T, MyAllocator<T> >. With that reading, the new syntax for aliasing seems reasonably logical. Кто-нибудь может на пальцах объяснить, чем Алиасы лучше typedef templates? |
![]() |
Сообщ.
#185
,
|
|
Цитата maggot @ Кто-нибудь может на пальцах объяснить, чем Алиасы лучше typedef templates? Ummm... В приведённой тобой цитате "лучше" и "хуже" они только в плане "читабельности". В остальном они эквивалентны. |
Сообщ.
#186
,
|
|
|
Доклад про Concepts. 1 час видео.
|
Сообщ.
#187
,
|
|
|
Вам не кажется, что новым стандартом никто не будет пользоваться? Что язык будет слишком сложный? То есть для него никогда не будут созданы средства рефакторинга, анализа кода. Время обучения языку гараздо выше чем у многих других ныне популярных языков. Кому это нужно? Ведь на Java или С можно делать всё то же самое. Такое чувство, что новый стандарт приведет к тому, что C++0x будет чисто академическим языком. По-моему двигаться нужно в сторону упрощения языка, а не усложнения. Я лет 5 назад был сторонником С++ и думал что у него есть будущее. Но похоже с новым стандартом на С++ можно положить крест.
|
![]() |
Сообщ.
#188
,
|
|
Мне не кажется. Кое-что из нового жду с нетерпением, те же концепты, r-value ссылки и auto, к примеру. Думаю, что на осиливание нового в языке уйдёт порядка месяца, нового в библиотеке - раза в 2-3 больше. Это с учётом того, что boost в общем-то знаком. Так что лично для себя не вижу проблем. Сильно сложнее он в новом стандарте не становится, а вот удобнее становится заметно.
|
Сообщ.
#189
,
|
|
|
Цитата Qraizer @ auto А это который раньше в Си был или я что-то путаю? ![]() |
Сообщ.
#190
,
|
|
|
Цитата gpd @ Вам не кажется, что новым стандартом никто не будет пользоваться? Забавное предположение ![]() Цитата gpd @ Ведь на Java или С можно делать всё то же самое. Нет, нельзя. Цитата gpd @ По-моему двигаться нужно в сторону упрощения языка, а не усложнения. За счёт усложнения языка достигается упрощение программирования. Упрощение языка приведёт к обратному эффекту. Цитата gpd @ Я лет 5 назад был сторонником С++ и думал что у него есть будущее. Но похоже с новым стандартом на С++ можно положить крест. К счастью, C++ не нуждается в таких сторонниках ![]() |
![]() |
Сообщ.
#191
,
|
|
kanes, ну, как бы да, но в новом стандарте auto из пешки превращается... если не в ферзя, то в ладью точно.
Dantes, как-то резко ты в конце... Или мне показалось? |
Сообщ.
#192
,
|
|
|
Цитата Qraizer @ ну, как бы да, но в новом стандарте auto из пешки превращается... если не в ферзя, то в ладью точно. А можно по подробней об этом? Пожалуйста ![]() |
![]() |
Сообщ.
#193
,
|
|
Цитата kanes @ А можно по подробней об этом? Пожалуйста Первый пост, поиск по предложению Цитата Deducing the type of variable from its initializer expression. Добавлено Аналог var из C#(или var в C# - аналог auto ![]() |
Сообщ.
#194
,
|
|
|
Цитата archimed7592 @ Аналог var из C#(или var в C# - аналог auto ). а для тех, кто не знает C# можно поподробнее? |
Сообщ.
#195
,
|
|
|
Переменная, определённая под этим ключевым словом автоматически приобретёт тип при инциализации. Если я правильно понимаю новый смысл auto
Добавлено Например: ![]() ![]() auto y = 10.0; // y — это число с плавающей точкой const auto *p = &y; // p является const double * |