The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Спецификация C++0X принята в качестве международного стандар..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от opennews (ok) on 14-Авг-11, 22:02 
Завершилась длительная эпопея по принятию нового стандарта на язык Си++. Комитет ISO по стандартизации языка C++ единогласно утвердил (http://herbsutter.com/2011/08/12/we-have-an-international-st.../) спецификацию C++0X (http://www2.research.att.com/~bs/C%2B%2B0xFAQ.html) в качестве международного стандарта "C++11". Стандарт C++0X планировалось выпустить еще в 2008 году, но его принятие постоянно откладывалось. Большинство представленных в стандарте возможностей уже поддерживаются (http://wiki.apache.org/stdcxx/C++0xCompilerSupport) в таких компиляторах, как GCC (http://gcc.gnu.org/projects/cxx0x.html), IBM C++ (http://www2.research.att.com/~bs/C%2B%2B0xFAQ.html), Intel C++ (http://software.intel.com/en-us/articles/c0x-features-suppor.../) и Visual C++ (http://blogs.msdn.com/b/vcblog/archive/2010/04/06/c-0x-core-...). Поддерживающие C++11 стандартные библиотеки (http://www2.research.att.com/~bs/C%2B...

URL: http://herbsutter.com/2011/08/12/we-have-an-international-st.../
Новость: http://www.opennet.ru/opennews/art.shtml?num=31476

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


3. "Спецификация C++0X принята в качестве международного стандар..."  +5 +/
Сообщение от Alatar (ok) on 14-Авг-11, 22:08 
>>Вместо макроса NULL для обозначения нулевого указателя введено ключевое слово nullptr;

Забавно... А чем плох NULL?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Спецификация C++0X принята в качестве международного стандар..."  +3 +/
Сообщение от с11 on 14-Авг-11, 22:16 
> Забавно... А чем плох NULL?

ключевое слово и макрос - разницу чувствуете?

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

8. "Спецификация C++0X принята в качестве международного стандар..."  +3 +/
Сообщение от ДФ (ok) on 14-Авг-11, 22:22 
Для повышения читабельности кода, лучшего обнаружения ошибок и определения перегрузок процедур и функций. Более подробно http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n148...
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

34. "Спецификация C++0X принята в качестве международного стандар..."  +6 +/
Сообщение от F1l on 15-Авг-11, 00:37 
>14/88

Я всегда знал что тут что-то не чисто.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

56. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Alatar (ok) on 15-Авг-11, 10:06 
> Для повышения читабельности кода, лучшего обнаружения ошибок и определения перегрузок
> процедур и функций. Более подробно http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n148...

Ага, примерно понятно, спасибо.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

93. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Alatar (ok) on 15-Авг-11, 14:07 
> Для повышения читабельности кода, лучшего обнаружения ошибок и определения перегрузок
> процедур и функций. Более подробно http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n148...

Кстати, вот ссылка на более свежую ревизию, пара интересных пояснений добавилось - http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n243...

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

30. "Спецификация C++0X принята в качестве международного стандар..."  +2 +/
Сообщение от Толстый (ok) on 14-Авг-11, 23:56 
NULL не имеет типа.
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

38. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Аноним (??) on 15-Авг-11, 01:23 
А какой тип у nullptr?
Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

54. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Mike Lee on 15-Авг-11, 09:36 
у него тип указатель. например есть перегруженная функция:

int foo(int a);
int foo(Type* a);

сейчас при вызове foo(0) будет неоднозначность и нужно будет 0 явно кастить. в 0х можно будет написать foo(nullptr) и компилятор разберется.

Ответить | Правка | ^ к родителю #38 | Наверх | Cообщить модератору

55. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Alatar (ok) on 15-Авг-11, 10:00 
Дык, а чем foo(nullptr) лучше, чем foo(NULL) ? Там ведь, вроде, каст к указателю уже встроен в макрос. Или нет?
Ответить | Правка | ^ к родителю #54 | Наверх | Cообщить модератору

70. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от dq0s4y71 (??) on 15-Авг-11, 11:51 
#ifndef __cplusplus
#define NULL ((void *)0)
#else   /* C++ */
#define NULL 0
#endif  /* C++ */

Я так думаю, nullptr - не просто указатель, а указатель на объект _любого типа_ - то, вместо чего сейчас используется костыль #define NULL 0.

Ответить | Правка | ^ к родителю #55 | Наверх | Cообщить модератору

72. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Alatar (ok) on 15-Авг-11, 12:09 
> #ifndef __cplusplus
> #define NULL ((void *)0)
> #else   /* C++ */
> #define NULL 0
> #endif  /* C++ */
> Я так думаю, nullptr - не просто указатель, а указатель на объект
> _любого типа_ - то, вместо чего сейчас используется костыль #define NULL
> 0.

Это откуда код? Как я понял из приведённого выше документа, реализация сильно разнится от компилятора к компилятору, в частности в GCC вообще
#define NULL __null

А ценность именно nullptr, как я понял, именно в том, что оно ключевое слово, а не макрос, объект и иже с ними, то есть до компилятора гарантированно доходит в первоначальном виде.
А ещё там есть забавный момент - nullptr не может быть приведён к целому (и дробному, разумеется =)) типу, и в том числе к bool. В связи с этим возникает вопрос: а можно ли будет писать if(my_ptr), или придётся писать if(my_ptr != nullptr)? По идее должно быть можно, потому что запрет на приведение типа должен работать только для этого ключевого слова, а нулевой указатель по-прежнему имеет значение 0 и может быть приведён к целому типу, но мало ли...

Ответить | Правка | ^ к родителю #70 | Наверх | Cообщить модератору

89. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от dq0s4y71 (??) on 15-Авг-11, 13:28 
> Это откуда код? Как я понял из приведённого выше документа, реализация сильно
> разнится от компилятора к компилятору, в частности в GCC вообще
>  #define NULL __null

Это код из GCC. Полностью так:

/* A null pointer constant.  */

#if defined (_STDDEF_H) || defined (__need_NULL)
#undef NULL        /* in case <stdio.h> has defined it. */
#ifdef __GNUG__
#define NULL __null
#else   /* G++ */
#ifndef __cplusplus
#define NULL ((void *)0)
#else   /* C++ */
#define NULL 0
#endif  /* C++ */
#endif  /* G++ */
#endif    /* NULL not defined and <stddef.h> or need NULL.  */
#undef    __need_NULL


__null в GCC, я так думаю, - это и есть nullptr.

> А ценность именно nullptr, как я понял, именно в том, что оно
> ключевое слово, а не макрос, объект и иже с ними, то
> есть до компилятора гарантированно доходит в первоначальном виде.

Не понял, что значит "в первоначальном виде". Вообще по стандарту NULL - это указатель, который гарантированно не равен любому указателю на объект или функцию, и, по идее, ((void*)0) должно быть достаточно для большинства приложений. Не знаю, почему это нельзя использовать в С++.

Ответить | Правка | ^ к родителю #72 | Наверх | Cообщить модератору

90. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от dq0s4y71 (??) on 15-Авг-11, 13:35 
> Не знаю, почему это нельзя использовать в С++.

На самом деле, да, нельзя - из-за перекрываемых функций.

Ответить | Правка | ^ к родителю #89 | Наверх | Cообщить модератору

91. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Alatar (ok) on 15-Авг-11, 13:55 
>>Не понял, что значит "в первоначальном виде".

Ну в том смысле, что макрос разворачивается препроцессором и компилятор в процессе работы не знает, что именно там было написано программистом - 0 или NULL, а с объектом вообще по дороге фиг знает что произойти может (мало ли что программисту придёт в голову), а с ключевым словом ничего сделать нельзя и компилятор в процессе компилирования чётко знает, что тут должен быть именно нулевой указатель и ни что другое и на основе этого может матюгаться на программиста или выводить типы.
А что касается почему не ((void*)0) см. пункт 1.2 приведённого выше документа. Хотя там, конечно, несколько не очевидно написано.

Ответить | Правка | ^ к родителю #89 | Наверх | Cообщить модератору

42. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от pavlinux (ok) on 15-Авг-11, 02:59 
> NULL не имеет типа.

Правильно, есть только низкий и высокий потенциал на проводнике,
а остальное флуд, так как у напряжения не бывает типов.
Точнее  бывает, переменное и постоянное, но это по времени.
А человек существо тупое - оно ещё со статическим программирование
не разобралось, чего уж говорить про написание программ с модифицирующимися
во времени алгоритмами.


  

Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

114. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Аноним (??) on 15-Авг-11, 19:30 
> а остальное флуд, так как у напряжения не бывает типов.

Ну просто некоторым хочется извратиться :). Господи, эти извращенцы даже для нуля с типом определиться не могут.

Ответить | Правка | ^ к родителю #42 | Наверх | Cообщить модератору

107. "Спецификация C++0X принята в качестве международного стандар..."  +1 +/
Сообщение от Аноним (??) on 15-Авг-11, 16:35 
Ошибка на миллиард.
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от с11 on 14-Авг-11, 22:14 
теперь еще до конца года ждать пока выпустят официальную документацию в виде книг
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

139. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Аноним (??) on 16-Авг-11, 16:03 
> теперь еще до конца года ждать пока выпустят официальную документацию в виде
> книг

А потом еще пару лет, пока Мейерс и Саттер литературу выпустят :)

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

9. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Аноним (??) on 14-Авг-11, 22:30 
> Реализация ключевого слова "constexpr", позволяющего указать, что выражение (функция или конструктор) возвращает константу и данные выражения можно использовать как константы, например: "constexpr int GetFive() {return 5;}". В дальнейшем GetFive можно указать, например, при определении массива "int some_value[GetFive() + 7];";

Не понимаю, зачем это. Не проще ли использовать константы как константы?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

25. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от anonymous (??) on 14-Авг-11, 22:59 
Очевидно для сверхзаумных констант, которые на препроцессоре выглядят нехорошо, и тип отслеживается
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

27. "Спецификация C++0X принята в качестве международного стандар..."  +7 +/
Сообщение от zog (??) on 14-Авг-11, 23:14 
Я так понимаю, что для того, чтобы можно было удобно рассчитать какие-то константы во время компиляции. Вот есть у тебя несколько констант. И некоторые от них зависят от других сложным образом (т.е. в одну строчку не запишешь), просто пишешь constexpr функцию, которая всё это аккуратно считает и используешь её потом.
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

31. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от inv (ok) on 15-Авг-11, 00:13 
Так написано же, для чего(в качестве примера)...
int val[getElementsCount()];
Сейчас так делать нельзя (это вам не жаба)
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

10. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Vernat email(ok) on 14-Авг-11, 22:33 
ну то на русском тока, на английском я думаю гораздо раньше выйдут. Наверняка у  Мейерса, Саттер, Джосаттиса есть уже заготовки :).  А вот Александреску вроде совсем на D свалил
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

12. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от с11 on 14-Авг-11, 22:37 
до конца года хотя бы на инглыше
на русском годика через два три
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

100. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от арсен on 15-Авг-11, 16:17 
Ну в D есть много понятного и разумного. В С++ уже нет...
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

16. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от iZEN (ok) on 14-Авг-11, 22:46 
С++ переусложнённый язык. Boost — это вообще монстр макроопределений и шаблонов.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

21. "Спецификация C++0X принята в качестве международного стандар..."  +10 +/
Сообщение от с11 on 14-Авг-11, 22:54 
> С++ переусложнённый язык.

не осилил, так и скажи
но всех тонкостей знать не обязательно

> Boost — это вообще монстр макроопределений и шаблонов.

библиотека != язык

ps
и да, java гадость ;)

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

22. "Спецификация C++0X принята в качестве международного стандар..."  –1 +/
Сообщение от Lain_13 email on 14-Авг-11, 22:57 
Как-будто так много изменилось… Лучше объясните мне какой прок от лямбда-функций. >_<
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

26. "Спецификация C++0X принята в качестве международного стандар..."  +5 +/
Сообщение от anonymous (??) on 14-Авг-11, 23:03 
> Как-будто так много изменилось… Лучше объясните мне какой прок от лямбда-функций.
> >_<

Вроде для быстрых собраных на на коленке компактных однострочников в стиле Pearl, [вброс]ну и вообще обфускация кода выйдет на новый уровень[/вброс]

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

102. "Спецификация C++0X принята в качестве международного стандар..."  +1 +/
Сообщение от арсен on 15-Авг-11, 16:21 
>> Как-будто так много изменилось… Лучше объясните мне какой прок от лямбда-функций.
>> >_<
> Вроде для быстрых собраных на на коленке компактных однострочников в стиле Pearl,
> [вброс]ну и вообще обфускация кода выйдет на новый уровень[/вброс]

В С++, на мой взгляд, не нужны.

Ответить | Правка | ^ к родителю #26 | Наверх | Cообщить модератору

127. "Спецификация C++0X принята в качестве международного стандар..."  +2 +/
Сообщение от Аноним (??) on 15-Авг-11, 21:56 
Угу. И шаблоны тоже. Не говоря уже про классы. Зачем они вообще нужны? Структур вполне хватает.
Ответить | Правка | ^ к родителю #102 | Наверх | Cообщить модератору

39. "Спецификация C++0X принята в качестве международного стандар..."  –1 +/
Сообщение от Аноним (??) on 15-Авг-11, 01:26 
> Лучше объясните мне какой прок от лямбда-функций.

Теоретики на них любят фапать. В остальном - можно и без них прекрасно обойтись. Хотя для написания неочевидного кода в стиле брейнфака - самое оно :)


Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

149. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Michael Shigorin email(ok) on 16-Авг-11, 22:52 
>> Лучше объясните мне какой прок от лямбда-функций.
> Теоретики на них любят фапать.

Лоровские, что ли?

> В остальном - можно и без них прекрасно обойтись.

Без математики тоже можно программировать, несмотря на складывавшийся в совейское время стереотип.  Только вот он не зря складывался.

Ммм... вот одни в школе алгебраическую задачку решают и пишут присваивание каждой строчкой, а другие в голове и пишут каждую вторую-третью строку продолжением (как чекпоинт для дебуга ;-).  Так вот в программировании без возможности сделать делалку не получается прыгать через ступеньку, так и останешься кодером.

Ответить | Правка | ^ к родителю #39 | Наверх | Cообщить модератору

157. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Аноним (??) on 19-Авг-14, 16:30 
Думаю не так много до окончательного разделения ( разраб/кодер ), т.к. для проверки своих мыслей и набросок исполняемого кода при разработке многих алгоритмов уже не нужно знание низкоуровневых языков, почему-то кажется что скоро появится профессия "интеллектуальный транслятор кода в ... из высокоуровневых систем разработки"
Ответить | Правка | ^ к родителю #149 | Наверх | Cообщить модератору

40. "Спецификация C++0X принята в качестве международного стандар..."  +2 +/
Сообщение от Mike Lee on 15-Авг-11, 01:28 
ну очевидно ж, чтобы по нормальному использовать stl-ные алгоритмы.
Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

75. "Спецификация C++0X принята в качестве международного стандар..."  +2 +/
Сообщение от anonymous (??) on 15-Авг-11, 12:34 
> Как-будто так много изменилось… Лучше объясните мне какой прок от лямбда-функций.
> >_<

Можно писать вполне читаемые фанкторы:

find_if( a.begin(), a.end(), []( int i ) { return f1(f0(i)); } );

На ISO/IEC-2003 придётся нарисовать класс с operator ()( int i ){ ... } внутри. По тексту (в старом написании) получится гораздо многословнее и будет гораздо менее очевидно --- что оно делает.

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

79. "Спецификация C++0X принята в качестве международного стандар..."  –1 +/
Сообщение от Аноним (??) on 15-Авг-11, 12:49 
> Можно писать вполне читаемые фанкторы:
> find_if( a.begin(), a.end(), []( int i ) { return f1(f0(i)); } );

Взаимоисключающие параграфы.

Ответить | Правка | ^ к родителю #75 | Наверх | Cообщить модератору

88. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от anonymous (??) on 15-Авг-11, 13:26 
>> Можно писать вполне читаемые фанкторы:
>> find_if( a.begin(), a.end(), []( int i ) { return f1(f0(i)); } );
> Взаимоисключающие параграфы.

Т.е. Вы, сударь, утверждаете, что

struct foo
{
  bool operator()( int i )
    { return f1(f0(i)); }
};

/* ... a lot of lines ... */

find_if( a.begin(), a.end(), foo() );

будет читаемей?

Ответить | Правка | ^ к родителю #79 | Наверх | Cообщить модератору

80. "Спецификация C++0X принята в качестве международного стандар..."  –3 +/
Сообщение от dq0s4y71 (??) on 15-Авг-11, 12:50 
Читаемые? Ха-ха три раза. Зачем из С++ делать Питон? Может быть, лучше сразу писать на Питоне?
Ответить | Правка | ^ к родителю #75 | Наверх | Cообщить модератору

105. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от fr0ster email(ok) on 15-Авг-11, 16:28 
К С++ прицепили парашут тормозной и вышел Питон?
Ответить | Правка | ^ к родителю #80 | Наверх | Cообщить модератору

111. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Аноним (??) on 15-Авг-11, 18:20 
Лямбды не делают из C++ питона. А на питоне лучше вообще ничего не писать.
Ответить | Правка | ^ к родителю #80 | Наверх | Cообщить модератору

112. "Спецификация C++0X принята в качестве международного..."  +/
Сообщение от anonymous (??) on 15-Авг-11, 18:33 
> Лямбды не делают из C++ питона. А на питоне лучше вообще ничего
> не писать.

так называемые «лямбды» не делают из c++ ничего, кроме очередного монстрика-уродца. потому что о каких лямбдах вообще может идти речь в языке без gc, замыканий и вменяемых HOF?

а «нововведение» дико смешно: очнулись, наконец. цитата из документашек по gcc:

#define lambda(return_type, body_and_args) \
  ({ \
    return_type __fn__ body_and_args \
    __fn__; \
  })

Use it like this:

int (*max)(int, int) = lambda (int , (int x, int y) { return x > y ? x : y; });

Or with qsort:

qsort (array, 42, sizeof (int), lambda (int, (const void * a, const void * b)
  {
    return *(int*)a - *(int*)b;
  }));


да и вообще — читать про compounds, typeof, local labels и прочие кошерные вещи, которые кучу лет уже как есть и работают. а тут, наконец, и до Зоркого Глаза допёрло, что у сарая стены нет.

Ответить | Правка | ^ к родителю #111 | Наверх | Cообщить модератору

121. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от dq0s4y71 (??) on 15-Авг-11, 20:27 
Ну, ладно, ладно, не делают... Неудачный я пример с Питоном привёл, согласен. Смысл был в том, что не надо приспосабливать микроскоп для забивания свай.
Ответить | Правка | ^ к родителю #111 | Наверх | Cообщить модератору

122. "Спецификация C++0X принята в качестве международного стандар..."  +1 +/
Сообщение от Аноним (??) on 15-Авг-11, 20:46 
Что за бред-то? Не умеете/не хотите использовать лямбды - не используёте, для вас в языке ничего не изменилось. А нормальные люди используют, и плевать они хотели на вас.
Ответить | Правка | ^ к родителю #121 | Наверх | Cообщить модератору

150. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Michael Shigorin email(ok) on 16-Авг-11, 22:54 
> Зачем из С++ делать Питон?

При чём тут Питон и то, что Гвидо противится попыткам сделать из него этакий новый лисп?

Ответить | Правка | ^ к родителю #80 | Наверх | Cообщить модератору

29. "Спецификация C++0X принята в качестве международного стандар..."  +1 +/
Сообщение от Vernat email(ok) on 14-Авг-11, 23:37 
но реальной замены ему пока что вроде бы нет
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

73. "Спецификация C++0X принята в качестве международного стандар..."  +1 +/
Сообщение от dq0s4y71 (??) on 15-Авг-11, 12:18 
Реальная замена С++ - это Си.
Ответить | Правка | ^ к родителю #29 | Наверх | Cообщить модератору

123. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Аноним (??) on 15-Авг-11, 20:47 
> Реальная замена С++ - это Си.

C не замена C++.

Ответить | Правка | ^ к родителю #73 | Наверх | Cообщить модератору

128. "Спецификация C++0X принята в качестве международного стандар..."  +2 +/
Сообщение от Аноним (??) on 15-Авг-11, 21:58 
> C++ не замена C.

fixed

Ответить | Правка | ^ к родителю #123 | Наверх | Cообщить модератору

35. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Аноним (??) on 15-Авг-11, 00:41 
Расслабься и учи. Других языков всё равно нет.
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

58. "Спецификация C++0X принята в качестве международного стандар..."  –1 +/
Сообщение от Аноним (??) on 15-Авг-11, 10:13 
Есть, причем много. Хороших и разных.
Ответить | Правка | ^ к родителю #35 | Наверх | Cообщить модератору

65. "Спецификация C++0X принята в качестве международного стандар..."  +2 +/
Сообщение от ezhik on 15-Авг-11, 11:08 
> С++ переусложнённый язык. Boost — это вообще монстр макроопределений и шаблонов.

Троли с LOR'а делают вбросы на опеннете.

Было уже обсуждение. Доболтались до того, что C++ отстой, но нет ничего лучше.

Ибо каждый идеальный для конкретной задачи инструмент имеет свой изъян (ограничение). Да и подход для каждой задачи свой идеальный инструмент означает, что для каждой задачи отдельный программист. Еще трудности возникнут про необходимости объединить инструменты (обмен данными между ними, например).

C++ переусложнен по причине наследства C и широты решаемых задач (от встраиваемых решений до реалтаймовых транзакций в кластерах бирж). Язык, ориентированный на более узкий круг задач, наверняка, можно сделать проще.

Стандарт C++0x ждал давно, доволен его официальным утверждением. Уже использую в своих проектах.

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

78. "Спецификация C++0X принята в качестве международного стандар..."  +3 +/
Сообщение от dq0s4y71 (??) on 15-Авг-11, 12:46 
> Было уже обсуждение. Доболтались до того, что C++ отстой, но нет ничего
> лучше.

Если бы это было так, то ничем, кроме С++, никто не пользовался бы.

> Ибо каждый идеальный для конкретной задачи инструмент имеет свой изъян (ограничение). Да
> и подход для каждой задачи свой идеальный инструмент означает, что для
> каждой задачи отдельный программист. Еще трудности возникнут про необходимости объединить
> инструменты (обмен данными между ними, например).

Именно так. Только отдельный программист\инструмент не для каждой конкретной задачи, а для каждого класса задач. Это называется специализация. С++ же пытается решать все классы задач, в результате чего получился раздутый переусложнённый монстр.

> C++ переусложнен по причине наследства C и широты решаемых задач (от встраиваемых
> решений до реалтаймовых транзакций в кластерах бирж). Язык, ориентированный на более
> узкий круг задач, наверняка, можно сделать проще.

С++ переусложнён не по причине наследства Си. Си сам по себе довольно простой язык. Переусложнение возникает когда бабушке пытаются приделать яйца и сделать из неё дедушку.

Ответить | Правка | ^ к родителю #65 | Наверх | Cообщить модератору

28. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от vbv email(ok) on 14-Авг-11, 23:24 
Добрый день!

>Большинство представленных в стандарте возможностей уже поддерживаются в таких
>компиляторах, как GCC

........
>Возможность вызывать одни конструкторы класса из других конструкторов этого же
>класса, что позволяет создавать конструкторы, использующие другие конструкторы
>без дублирования кода;

Хочу. Только вот у меня gcc на это дело ругается... Может ему чего-то включить нада?
Знающие люди подскажите PLS.

ps:
  Если "Inheriting Constructors" это оно - тогда вопрос исчерпан.

pps: Разобрался.
  Фича называется "Delegating Constructors" Но без патча gcc ее не ест.

Таким образом говорить про описание, видимо, рановато. Надо, чтобы еще и компиляторы всё это дело понимали.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

33. "Спецификация C++0X принята в качестве международного стандар..."  +1 +/
Сообщение от inv (ok) on 15-Авг-11, 00:21 
g++ -std=c++0x
Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

32. "Спецификация C++0X принята в качестве международного стандар..."  –1 +/
Сообщение от pavlinux (ok) on 15-Авг-11, 00:20 
> Кроме того, язык стал проще для изучения и освоения новичками.

Ага

cout << x << (2 << *y) << endl;

или для понимания:

cout << x shl (2 shl *y) << endl;

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

37. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Аноним (??) on 15-Авг-11, 00:45 
Precedence << - слева направо, так что

cout << x << (2 shl *y) << endl.

Ответить | Правка | ^ к родителю #32 | Наверх | Cообщить модератору

44. "Спецификация C++0X принята в качестве международного стандар..."  –1 +/
Сообщение от pavlinux (ok) on 15-Авг-11, 05:00 
> cout << x << (2 shl *y) << endl.

Вставил цитирование "язык стал проще для изучения и освоения новичками. "

Мне надо:

x << (2 << *y)

1) 2 сдвинуть на то, что находиться по адреcу *y.
2) x сдвинуть на то, что получилось в предыдущем выражении.
3) вывести на консоль.  
4) добавить конец строки.

в С++ нет оператора shl.

Ответить | Правка | ^ к родителю #37 | Наверх | Cообщить модератору

74. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от ананим on 15-Авг-11, 12:32 
можно подумать в других проще.
вот так лучше что ли будет?
>{
>    char hex[] = { '0', '1, '2', '3', '4', '5', '6',
>        '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f };
>    byte b = (byte) 0xf1;                        
>    System.out.println("b = 0x" + hex[(b >> 4) & 0x0f] + hex[b & 0x0f]);
>  }

http://khpi-iip.mipk.kharkiv.edu/library/oop/kart/05.html
офигенно понятно для новичка. что доказывает:
- что чтение доки лишним никогда не бывает;
- предметную область знать нужно;
- и не стоит писать плохо понятный код (где из твоего кода понятно что y не класс к примеру с переопределенным оператором?) в одну строчку, даже если С++ это позволяет (для кого инлаййн придумали? да даже макросы?)

Ответить | Правка | ^ к родителю #44 | Наверх | Cообщить модератору

108. "Спецификация C++0X принята в качестве международного стандар..."  +4 +/
Сообщение от inv (ok) on 15-Авг-11, 16:42 
А если в алгебраическом выражении скобки забудешь, математика тоже станет "сложной и неудобной"?
Ответить | Правка | ^ к родителю #44 | Наверх | Cообщить модератору

126. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Аноним (??) on 15-Авг-11, 20:51 
> 1) 2 сдвинуть на то, что находиться по адреcу *y.
> 2) x сдвинуть на то, что получилось в предыдущем выражении.
> 3) вывести на консоль.
> 4) добавить конец строки.

Вы вообще не знаете языка, я правильно понял?

std::cout << (x << (2 << *y)) << std::endl;

> в С++ нет оператора shl

Вы сами первый его написали. Отвечающие любезно продолжили его использовать чтобы вам было понятнее.

Ответить | Правка | ^ к родителю #44 | Наверх | Cообщить модератору

129. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от pavlinux (ok) on 15-Авг-11, 23:16 
> std::cout << (x << (2 << *y)) << std::endl;

Вот позовите к экрану блондинку изучавшую в универе только Паскаль,
и попросите объяснить написанное.

Так же добавьте, что сама конструкция с "<<", работает по разному,
в зависимости от операнда.


#define x (x << (2 << *y))

      // где-то через строчек 200  
      std::cout << x << std::endl;

// и ещё через 200
#undef x

      // а потом
       std::cout << x << std::endl;

// и в конце
#endif
...

У неё моск раком встанет. И правильно сделает, потому что двоякая
интерпретация это не есть хорошо.

Та же фигня с операцией ","

   int x = -5;
   int y = 3;
   int z = -7;

Чему будет равно z

при
   z = (x, y);
при
   z = x,y;
при
   z = !x,!y;
при
   z = (!x,!y);

---

Уже вижу, как Вы, стоят у доски в качестве преподавателя, ловите
бурные овации с потоком тухлых помидоров.

Ответить | Правка | ^ к родителю #126 | Наверх | Cообщить модератору

140. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Аноним (??) on 16-Авг-11, 16:13 
Я порадуюсь, если у нее мозг раком встанет. Ибо блондинок не надо.
Пущай лучше она пишет ..в твиттер, например. :)

Ответить | Правка | ^ к родителю #129 | Наверх | Cообщить модератору

158. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Аноним (??) on 19-Авг-14, 16:43 
> Я порадуюсь, если у нее мозг раком встанет. Ибо блондинок не надо.
> Пущай лучше она пишет ..в твиттер, например. :)

К Сожалению C++ появился тогда когда люди решали не только проблему какой сделать синтаксис, но и проблему "сколько символов для реализации задачи понадобится" поэтому так и вышло, 90% кода который попадается не на c++ читается нормально, c++ постоянно ловишь себя на мысли что приходиться задумываться "что же в этом месте происходит".

Ответить | Правка | ^ к родителю #140 | Наверх | Cообщить модератору

160. "Спецификация C++0X принята в качестве международного..."  +/
Сообщение от arisu (ok) on 20-Авг-14, 05:05 
> К Сожалению C++ появился тогда когда люди решали не только проблему какой
> сделать синтаксис, но и проблему "сколько символов для реализации задачи понадобится"

ты спутал его с C.

Ответить | Правка | ^ к родителю #158 | Наверх | Cообщить модератору

161. "Спецификация C++0X принята в качестве международного..."  +/
Сообщение от Аноним (??) on 20-Авг-14, 10:12 
>> К Сожалению C++ появился тогда когда люди решали не только проблему какой
>> сделать синтаксис, но и проблему "сколько символов для реализации задачи понадобится"
> ты спутал его с C.

ну т.к. с++ возник как дополнение к c это не сильно принципиально, но в начале 80-х тема объёма исходников ещё была актуально, в середине 90-х уже нет.

Ответить | Правка | ^ к родителю #160 | Наверх | Cообщить модератору

151. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от klalafuda on 17-Авг-11, 01:00 
> cout << x << (2 << *y) << endl;
> или для понимания:
> cout << x shl (2 shl *y) << endl;

А я своему коллеге по этому поводу скажу просто и ясно - иннах поспи и не выеживайся. Как проспишься - проходи, обсудим. Это если в реале. Ну а в теории - да, по настроению, буду сопли наматывать на локти лишь бы пофлеймить на пустом месте.

Ответить | Правка | ^ к родителю #32 | Наверх | Cообщить модератору

36. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Аноним (??) on 15-Авг-11, 00:42 
Два года уже весь продакшн код только на 0x. Без rvalue references/move semantics C++ вообще не нyжен.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

41. "Спецификация C++0X принята в качестве международного стандар..."  +1 +/
Сообщение от Вова on 15-Авг-11, 01:38 
в какой конторе?
Ответить | Правка | ^ к родителю #36 | Наверх | Cообщить модератору

43. "Спецификация C++0X принята в качестве международного..."  +6 +/
Сообщение от anonymous (??) on 15-Авг-11, 03:39 
> в какой конторе?

Anonymous, Gmbh -- очевидно же.

Ответить | Правка | ^ к родителю #41 | Наверх | Cообщить модератору

83. "Спецификация C++0X принята в качестве международного..."  +1 +/
Сообщение от Аноним (??) on 15-Авг-11, 12:52 
> Anonymous, Gmbh -- очевидно же.

Broken & Late, ltd ;)

Ответить | Правка | ^ к родителю #43 | Наверх | Cообщить модератору

45. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Аноним (??) on 15-Авг-11, 05:30 
Все ясно... Как в свое время ползли мобильники и смартфоны друг к другу. Так сейчас ползет C++ к Java. Ну осталось совсем немного подождать... Пока доползут...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

47. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от ezhik on 15-Авг-11, 07:19 
Судя по тому, что в сомнительных комментариях к статье ничего кроме Java не упоминают, я делаю вывод, что народ ничего другого и не знает.

Сейчас что в школах/колледжах только Java преподают?

Ответить | Правка | ^ к родителю #45 | Наверх | Cообщить модератору

159. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Аноним (??) on 19-Авг-14, 16:46 
> Судя по тому, что в сомнительных комментариях к статье ничего кроме Java
> не упоминают, я делаю вывод, что народ ничего другого и не
> знает.
> Сейчас что в школах/колледжах только Java преподают?

просто при разработке синтаксиса Java уже знали о проблемах предшественников, хотя и своих немного добавили

Ответить | Правка | ^ к родителю #47 | Наверх | Cообщить модератору

49. "Спецификация C++0X принята в качестве международного стандар..."  +2 +/
Сообщение от www2 (??) on 15-Авг-11, 07:38 
C++ станет таким же быстрым, как Java, а Java станет такой же надёжной и простой, как C++.
Ответить | Правка | ^ к родителю #45 | Наверх | Cообщить модератору

87. "Спецификация C++0X принята в качестве международного стандар..."  +1 +/
Сообщение от anonymous (??) on 15-Авг-11, 13:17 
> Все ясно... Как в свое время ползли мобильники и смартфоны друг к
> другу. Так сейчас ползет C++ к Java.

Скорее нет. Я вот в итоговом документе 'java-измов' не наблюдаю.

> Ну осталось совсем немного подождать... Пока доползут...

Из того, что сейчас оформилось, в процессе подготовки выкинули сильно лоббированный одной фирмой garbage collector.

Ответить | Правка | ^ к родителю #45 | Наверх | Cообщить модератору

141. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Аноним (??) on 16-Авг-11, 16:19 
> Из того, что сейчас оформилось, в процессе подготовки выкинули сильно лоббированный одной
> фирмой garbage collector.

И абсолютно правильно сделали. RAII и смарт-поинтеры и без gc справляются.

Ответить | Правка | ^ к родителю #87 | Наверх | Cообщить модератору

51. "Спецификация C++0X принята в качестве международного стандар..."  +1 +/
Сообщение от ProfX (ok) on 15-Авг-11, 08:52 
Всем привет!
Я очень рад, что наконец стандарт С++11 утвержден, будем теперь только ждать доки и с удовольствием изучать. Мы застали новую ступень эволюции С++!
То что С++ становится похож на Java - не факт. Java не настолько гибка как С++, в то время как с появлением стандарта С++11 - C++ становится еще гибче чем был. Меня например очень радует появоение возможности создавать шаблоны с переменным числом аргументов.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

52. "Спецификация C++0X принята в качестве международного..."  +/
Сообщение от anonymous (??) on 15-Авг-11, 09:05 
не гибче, а монструозней.
Ответить | Правка | ^ к родителю #51 | Наверх | Cообщить модератору

53. "Спецификация C++0X принята в качестве международного..."  +3 +/
Сообщение от ProfX (ok) on 15-Авг-11, 09:19 
Нет, тут есть одна деталь.

С одной стороны:
новичку, изучить базовые конструкции С++ и начать ими пользоваться, думаю сейчас станет легче. Но это не сделает его професионалом, т.к. все эти нововведения (новая конструкция for, и пр.) - верхушка айсберга.

с другой стороны:
для того чтобы стать професионалом - теперь надо знать куда больше чем раньше - так как язык значительно расширился.

Ответить | Правка | ^ к родителю #52 | Наверх | Cообщить модератору

57. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Адольф on 15-Авг-11, 10:07 
Здесь можно посмотреть поддержку компиляторами нового стандарта
http://wiki.apache.org/stdcxx/C++0xCompilerSupport
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

59. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от vaychick on 15-Авг-11, 10:45 
А как насчет поддержки MinGW?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

60. "Спецификация C++0X принята в качестве международного..."  +/
Сообщение от anonymous (??) on 15-Авг-11, 10:52 
> А как насчет поддержки MinGW?

а кого волнует винда? у вас есть свой компилятор, от m$ — вот к ним и пишите, пусть поддержку пилят.

правда, учитывая, что C99 они не смогли осилить за более чем десять лет… ну, я бы не надеялся.

Ответить | Правка | ^ к родителю #59 | Наверх | Cообщить модератору

67. "Спецификация C++0X принята в качестве международного..."  –1 +/
Сообщение от vivac on 15-Авг-11, 11:28 
учитывая что большенство плюшек С99 используется в linux ядре
то вопрос о том кто его проталкивает более чем очевиден
Ответить | Правка | ^ к родителю #60 | Наверх | Cообщить модератору

77. "Спецификация C++0X принята в качестве международного..."  +1 +/
Сообщение от ананим on 15-Авг-11, 12:40 
и что?
не, нужно оставновить развитие всяких сейпласплас и срочно пересесть на дотнет/моно?

зыж
а какое отношение С99 имеет к С++0X (да и просто С++) вообще, и к ядру линуха в частности?
опять ограничение знаний подвело "удачный" тролизм счастливого обладателя винды?

Ответить | Правка | ^ к родителю #67 | Наверх | Cообщить модератору

85. "Спецификация C++0X принята в качестве международного..."  +/
Сообщение от vivacpp on 15-Авг-11, 12:54 
анонимы как всегда весь треид не читают
ишут подходящее выражение что бы вставить именно свое словцо?
Ответить | Правка | ^ к родителю #77 | Наверх | Cообщить модератору

120. "Спецификация C++0X принята в качестве международного..."  +1 +/
Сообщение от ананим on 15-Авг-11, 19:53 
Ха! вопрос про мингв (который таки и с++ и таки соотносится с сабжем) только таких умников как ты может привести к гцц специфик в ведре, который исключительно на С.
Пиши ищё. :D
Ответить | Правка | ^ к родителю #85 | Наверх | Cообщить модератору

131. "Спецификация C++0X принята в качестве международного..."  –1 +/
Сообщение от vivacpp on 16-Авг-11, 00:35 
ты таки в пролете, потому что я отвечал на плюшки c99
и то, почему M$ особо не спешит их осваивать
в M$ на плаин C только ядро, и то не все, остальная часть драйверов итд на c++
поэтому закидоны насчет c99, идите пишите в комитет
этот стандарт развивают отдельно и с++ он никак не касается
Ответить | Правка | ^ к родителю #120 | Наверх | Cообщить модератору

84. "Спецификация C++0X принята в качестве международного..."  +2 +/
Сообщение от Аноним (??) on 15-Авг-11, 12:54 
> учитывая что большенство плюшек С99 используется в linux ядре

Да хоть в чьем ядре. Он тупо удобнее предшественников. А если до MS как до жирафа - пусть это будет их проблемой, а не моей.


Ответить | Правка | ^ к родителю #67 | Наверх | Cообщить модератору

62. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от vaychick on 15-Авг-11, 10:59 
>у вас есть свой компилятор, от m$

M$ как раз по ссылке http://wiki.apache.org/stdcxx/C++0xCompilerSupport половину поддерживает, я понял что задал глупый вопрос потому, что MinGW порт GCC и пока очередную версию GCC портируют пройдет время, причем не известно сколько.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

66. "Спецификация C++0X принята в качестве международного..."  +/
Сообщение от anonymous (??) on 15-Авг-11, 11:19 
> причем не известно сколько.

но долго, долго. потому что всем лень.

Ответить | Правка | ^ к родителю #62 | Наверх | Cообщить модератору

68. "Спецификация C++0X принята в качестве международного стандар..."  +1 +/
Сообщение от Аноним (??) on 15-Авг-11, 11:31 
Мой комент потерли. Ладно, задам вопрос по другому. :(
Сейчас параллельно с C++0X разрабатывается очередной стандарт программирования Си под кодовым названием C1X. Мне вот интересно, они их как нибудь будут синхронизировать, дабы исключить возможность появления несовместимости, или таки решили развиваться обособленно?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

71. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Аноним (??) on 15-Авг-11, 12:03 
Несовместимости и раньше были. И развиваются они параллельно.
Ответить | Правка | ^ к родителю #68 | Наверх | Cообщить модератору

92. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от gkv311 (ok) on 15-Авг-11, 13:56 
Кто-нибудь понял зачем они wchar_t сделали независимым от char16_t и char32_t типом? Для того чтобы старые платформо-зависимые Unicode-ные велосипеды остались нетронутыми, но при этом и несовместимыми с новыми типами?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

95. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от barmaglot (??) on 15-Авг-11, 15:02 

Да возрадуйтесь-же !!!

u8"I'm a UTF-8 string."
u"This is a UTF-16 string."
U"This is a UTF-32 string."

Ответить | Правка | ^ к родителю #92 | Наверх | Cообщить модератору

96. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Аноним (??) on 15-Авг-11, 15:20 
L"This is a wide string."
Ответить | Правка | ^ к родителю #95 | Наверх | Cообщить модератору

97. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от barmaglot (??) on 15-Авг-11, 15:29 
... L"", produces a null-terminated array of type const wchar_t, where wchar_t is a wide-character. Neither literal type offers support for string literals with UTF-8, UTF-16, or any other kind of Unicode encodings.

Поддержка L""  никуда не делась и не денется, но L"" это сферический конь в вакууме. Из за этого постоянно приходилось внешние костыли/преобразователи в unicode использовать.

Ответить | Правка | ^ к родителю #96 | Наверх | Cообщить модератору

104. "Спецификация C++0X принята в качестве международного стандар..."  +1 +/
Сообщение от gkv311 (ok) on 15-Авг-11, 16:28 
> Поддержка L""  никуда не делась и не денется, но L"" это
> сферический конь в вакууме. Из за этого постоянно приходилось внешние костыли/преобразователи
> в unicode использовать.

Если говорить о Linux, то там всё станет прозрачно - юзай Utf-8 везде и всё зашибись.
А в виндах WinAPI по прежнему на wchar_t, и чего с ним делать - непонятно.
То есть по-прежнему придётся писать для него костыли, ибо с char16_t оно 'не дружит', хотя по сути - оно и есть на виндах.

Ответить | Правка | ^ к родителю #97 | Наверх | Cообщить модератору

99. "Спецификация C++0X принята в качестве международного стандар..."  –1 +/
Сообщение от barmaglot (??) on 15-Авг-11, 16:14 
Наконец-то !
Особенно радует:
1. Стандартизация регекспов
2. Возможность создания шаблона функции, возвращаемый тип которого определяется автоматически на основании другой функции или выражения;
3. Возможность создавать шаблоны с переменным количеством аргументов;
4. Расширенная поддержка символов в Unicode;
5. Возможность вызывать одни конструкторы класса из других конструкторов этого же класса, что позволяет создавать конструкторы, использующие другие конструкторы без дублирования кода; (Наконец-то!!!)
6. Возможность использования локальных и безымянных типов в качестве аргументов шаблонов;
7. alignments
8. constexpr
9. decltype
10. control of defaults: default and delete && control of defaults: move and copy
11. Preventing narrowing
12. override controls: override
13. override controls: final
14. Static (compile-time) assertions -- static_assert - изумительно. Хотя вобщем-то обходились раньше своими средствами.
15. template alias - О ДА !!!
16. Container improvements: Initializer lists, Move operators, Improved push operations, Scoped allocators

Неоднозначно:
1. atomic operations - с одной стороны хорошо: стандартизация атомарных операций; с другой плохо: атомарные операции будут определены в userland. Непонятно как это скажется на производительности по сравнению с POSIX mutex-ами. Но уже хорошо, что для использования атомарных операций, необходим специфический синтаксис, - пересечений и конфликтов с существующей кодовой базой использующей POSIX threads wrappers небудет ... Или всё-таки будет если код будет смешаным ? Неясно.
2. Rvalue references - зрэ это они. Стандартная семантика lvalue/rvalue проста как топор, и слава богу! Введение  move запутает семантику, и в резулътате уменьшает прозрачность кода.


Пугает:
1. Вместо макроса NULL для обозначения нулевого указателя введено ключевое слово nullptr.  При этом nullptr не является зарезервированым. Это страшно ...
2. attributes. Обязательно найдутся вендоры, которые создадут диалекты.


В общем стандарт как стандарт, хорошо что уже приняли наконец-то.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

109. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от anonymous (??) on 15-Авг-11, 17:15 

> Неоднозначно:
> 1. atomic operations - с одной стороны хорошо: стандартизация атомарных операций; с
> другой плохо: атомарные операции будут определены в userland. Непонятно как это
> скажется на производительности по сравнению с POSIX mutex-ами. Но уже хорошо,
> что для использования атомарных операций, необходим специфический синтаксис, - пересечений
> и конфликтов с существующей кодовой базой использующей POSIX threads wrappers небудет
> ... Или всё-таки будет если код будет смешаным ? Неясно.

atomics и mutexes --- это, мммм, совсем разные вещи. В связи с атомиками в стандарте описаны 'модели памяти' (с отсылками к понятиям причинности событий --- см. работы по 'виртуальной синхронности'). Если их не читать/не понимать, то получается ... --- см. пост выше. Т.н. 'гарантии', в зависимости от модели памяти, в атомиках весьма сложны и нетривиальны для понимания (и неочевидны). А будут ли эти 'неочевидности' вылезать --- сильно от железа зависит.

Видимо, пришлось вводить атомики из-за весьма распространёённых (в большинстве некорректных и опасных) практик со smart-указателями и т.н. lock-free алгоритмами.

> 2. Rvalue references - зрэ это они. Стандартная семантика lvalue/rvalue проста как
> топор, и слава богу! Введение  move запутает семантику, и в
> резулътате уменьшает прозрачность кода.

Rvalue references совершенно необходимы для вменяемого описания move-семантики (практическое применение --- оооочень влияет на производительность, если объект удовлетворяет определённым ограничениям).

Ответить | Правка | ^ к родителю #99 | Наверх | Cообщить модератору

110. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от barmaglot (??) on 15-Авг-11, 18:15 
>> atomics и mutexes --- это, мммм, совсем разные вещи.

Спасибо К.О. А то я незнал что атомики и mutex разные вещи. Однако все "атомарные" операции реализуются mutex-ами за неимением атомарных типов/операций в языке. То-есть mutex-ом вы осуществляете лок/анлок. Я к сожалению прямо сейчас в код gcc зелезть не могу, поэтому незнаю использованы ли старые грин-тред наработки для реализации атомиков, то-есть юзерлэнд или используются средства ОС. для меня актуальны *nix, соответственно , -  POSIX.1c вообще и mutex-ы в частности. Если использован POSIX.1c, то песня одна, а если юзерлэнд, то совсем другая. У меня большая кодовая база завязана на POSIX.1c wrappers.

>>     Rvalue references совершенно необходимы для вменяемого описания move-семантики (практическое применение --- оооочень влияет на производительность, если объект удовлетворяет определённым ограничениям).

По поводу Rvalue references, вы неправы, это совсем другой move. Почитайте внимательно документацию.

Ответить | Правка | ^ к родителю #109 | Наверх | Cообщить модератору

113. "Спецификация C++0X принята в качестве международного стандар..."  –2 +/
Сообщение от phprus (ok) on 15-Авг-11, 19:24 
> >> atomics и mutexes --- это, мммм, совсем разные вещи.
> Спасибо К.О. А то я незнал что атомики и mutex разные вещи. Однако все "атомарные" операции реализуются mutex-ами за неимением атомарных типов/операций в языке.

Какие мутексты, какие атомарные типы/операции?!

Если мне память не изменяет, то уже лет 15+ известные мне архитектуры имеют соответствующие ассемблерные инструкции для атомарной работы с "переменными" в памяти.
На х86 атомарными инструкциями можно работать с 8,16,32 битовыми ячейками, на х86-64 еще и с 64битовыми.
А через мутексы атомарные операции реализуются только для типов, которые не подпадают под вышеназванные размеры для целевой платформы.

Ответить | Правка | ^ к родителю #110 | Наверх | Cообщить модератору

132. "Спецификация C++0X принята в качестве международного стандар..."  –2 +/
Сообщение от inv (ok) on 16-Авг-11, 01:55 
Яволь TSL инструкция зовётся :) (test and set lock)
На этой инструкции базируются все синхронизационные механизмы, такие как мутексы и семафоры. Без неё это просто не работало бы, ибо нужно всегда быть уверенным что флажок отвечающий за занятость критической секции будет переписано только одним потоком.
Ответить | Правка | ^ к родителю #113 | Наверх | Cообщить модератору

142. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от anonymous (??) on 16-Авг-11, 16:48 
> Без неё это просто не работало бы, ибо нужно всегда быть
> уверенным что флажок отвечающий за занятость критической секции будет переписано только
> одним потоком.

а мужики-то не знают
гуглите алгоритм дейкстры

Ответить | Правка | ^ к родителю #132 | Наверх | Cообщить модератору

146. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от inv (ok) on 16-Авг-11, 18:51 
Слышал звон, не знаю где он? :D
"Алгоритм дейкстры" совершенно никак сюда не относится к данной проблеме.
Дейкстра ввёл понятие семафоров, с операциями probeer и verhoog (отсюда P и V) - но это ниразу не его алгоритм. (во всём мире под алгоритмом Дейкстры понимают алгоритм поиска кратчайших путей во взвешенном графе).
Только вот как не поверни, но без TSL инструкции семафор работать НЕ будет. Поскольку изменение счётчика семафора и проверка его должны выполняться атомарно и всё тут.

Специально для вас:
http://en.wikipedia.org/wiki/Semaphore_(programming)
".... This approach does not work on multiprocessor systems where it is possible for two programs sharing a semaphore to run on different processors at the same time. To solve this problem in a multiprocessor system a locking variable can be used to control access to the semaphore. The locking variable is manipulated using a test-and-set-lock (TSL) command."

Ответить | Правка | ^ к родителю #142 | Наверх | Cообщить модератору

153. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Вова on 17-Авг-11, 10:05 
Мне ваши сообщения напоминают пересказ содержимого обрывков старой газеты с гвоздика в  сельском сортире, поясню почему. Дело в том, что инструкцию tsl описывал Таненнбаум в 80х-90х годах, во всех изданиях и всех версиях всех кирпичей содержащих в названии "операционные системы" содержится одна и та же глава про синхронизацию процессов. Но, если читать полностью, то  рядом же описывался алгоритм Петерсона, не требующий данной инструкции, то есть, если читали Таненнбаума - то читали не полностью, читали обрывок газеты в условиях отсутствия других источников информации. Опять же, почему газета была старая - в наше время, при наличии проблемы неконсистентности памяти на многопроцессорных системах, инструкция tsl немного устарела, это была б актуальная ремарка в середине - конце 90х, не позже.

Ответить | Правка | ^ к родителю #146 | Наверх | Cообщить модератору

156. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от inv (ok) on 18-Авг-11, 01:14 
Читал я про этот алгоритм, газетка того же года из той же деревни, название запамятовал.
Busy-waiting не самый эффективный способ, но не важно.
Окей, если не TSL, то CMPXCHG.
Ответить | Правка | ^ к родителю #153 | Наверх | Cообщить модератору

144. "Спецификация C++0X принята в качестве международного стандар..."  –1 +/
Сообщение от anonymous (??) on 16-Авг-11, 16:50 
> Спасибо К.О. А то я незнал что атомики и mutex разные вещи.
> Я к сожалению прямо
> сейчас в код gcc зелезть не могу, поэтому незнаю использованы ли
> старые грин-тред наработки для реализации атомиков, то-есть юзерлэнд или используются
> средства ОС. для меня актуальны *nix, соответственно , -  POSIX.1c

не надо лезть в код gcc своими грязными руками.
они специально для вас выложили наружу инстриники.
которые, естественно, никакого отношения к libpthread не имеют.

Ответить | Правка | ^ к родителю #110 | Наверх | Cообщить модератору

137. "Спецификация C++0X принята в качестве международного стандар..."  +1 +/
Сообщение от aborodin (??) on 16-Авг-11, 12:53 
> 5. Возможность вызывать одни конструкторы класса из других конструкторов этого же класса,
> что позволяет создавать конструкторы, использующие другие конструкторы без дублирования
> кода; (Наконец-то!!!)

Что наконец-то? Ещё одна ложка синтаксического сахара? Ничего не слипнется?

Дублирование кода можно избежать, если вынести его в отдельную функцию.

Ответить | Правка | ^ к родителю #99 | Наверх | Cообщить модератору

145. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Аноним (??) on 16-Авг-11, 18:40 
> Дублирование кода можно избежать, если вынести его в отдельную функцию.

Да, но.. Инициализация в отдельной функции не отменяет инициализацию в конструкторе. Двукратная инициализация может дорогого стоить.

Ответить | Правка | ^ к родителю #137 | Наверх | Cообщить модератору

152. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от aborodin (ok) on 17-Авг-11, 09:42 
>> Дублирование кода можно избежать, если вынести его в отдельную функцию.
> Да, но.. Инициализация в отдельной функции не отменяет инициализацию в конструкторе. Двукратная
> инициализация может дорогого стоить.

Ничего не понял. Какая двухкратная инициализация?

Пример:

// функция инициализации для избавления от дублирования кода
void foo:init (список параметров)
{
код_инициализации;
}

// первый конструктор
foo::foo (список_параметров)
{
init (аргументы);
}

// второй конструктор
foo::foo (список_параметров)
{
код;
init (аргументы);
код;
}

По новому стандарту, это будет выглядеть так:

// первый конструктор
foo::foo (список_параметров)
{
код_инициализации;
}

// второй конструктор
foo::foo (список_параметров)
{
код;
foo (аргументы); // первый конструктор
код;
}

Я правильно понимаю идею?

Ответить | Правка | ^ к родителю #145 | Наверх | Cообщить модератору

154. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от Аноним (??) on 17-Авг-11, 10:41 
class Bar
{
   члены класса
   void initialize( аргументы );

public:
   Bar( аргументы ); // конструктор
};

Bar::Bar( аргументы ) // инициализация членов класса значениями по-умолчанию, все равно что
  : member1()
  , member2()
  // etc
{
  initialize( аргументы ); // инициализация
}

void Bar::initialize( аргументы )
{
  // что-то инициализируется
}


Здесь члены класса инициализируются два раза: один раз в конструкторе значениями по-умолчанию, второй раз - в методе initialize.

Теперь понятно?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

155. "Спецификация C++0X принята в качестве международного стандар..."  +/
Сообщение от aborodin (ok) on 17-Авг-11, 11:32 
Да, понятно. Спасибо.
Ответить | Правка | ^ к родителю #154 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру