URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 79722
[ Назад ]

Исходное сообщение
"Спецификация C++0X принята в качестве международного стандар..."

Отправлено opennews , 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++0X принята в качестве международного стандар..."
Отправлено Alatar , 14-Авг-11 22:08 
>>Вместо макроса NULL для обозначения нулевого указателя введено ключевое слово nullptr;

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


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

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


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

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

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


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

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


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено Alatar , 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...


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено Толстый , 14-Авг-11 23:56 
NULL не имеет типа.

"Спецификация C++0X принята в качестве международного стандар..."
Отправлено Аноним , 15-Авг-11 01:23 
А какой тип у nullptr?

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

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

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


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

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

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


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено Alatar , 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 и может быть приведён к целому типу, но мало ли...


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено dq0s4y71 , 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) должно быть достаточно для большинства приложений. Не знаю, почему это нельзя использовать в С++.


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

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


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

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


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено pavlinux , 15-Авг-11 02:59 
> NULL не имеет типа.

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


  


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

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


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено Аноним , 15-Авг-11 16:35 
Ошибка на миллиард.

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

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

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


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

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


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено anonymous , 14-Авг-11 22:59 
Очевидно для сверхзаумных констант, которые на препроцессоре выглядят нехорошо, и тип отслеживается

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

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

"Спецификация C++0X принята в качестве международного стандар..."
Отправлено Vernat , 14-Авг-11 22:33 
ну то на русском тока, на английском я думаю гораздо раньше выйдут. Наверняка у  Мейерса, Саттер, Джосаттиса есть уже заготовки :).  А вот Александреску вроде совсем на D свалил

"Спецификация C++0X принята в качестве международного стандар..."
Отправлено с11 , 14-Авг-11 22:37 
до конца года хотя бы на инглыше
на русском годика через два три

"Спецификация C++0X принята в качестве международного стандар..."
Отправлено арсен , 15-Авг-11 16:17 
Ну в D есть много понятного и разумного. В С++ уже нет...

"Спецификация C++0X принята в качестве международного стандар..."
Отправлено iZEN , 14-Авг-11 22:46 
С++ переусложнённый язык. Boost — это вообще монстр макроопределений и шаблонов.

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

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

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

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

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


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено Lain_13 , 14-Авг-11 22:57 
Как-будто так много изменилось… Лучше объясните мне какой прок от лямбда-функций. >_<

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

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


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

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


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено Аноним , 15-Авг-11 21:56 
Угу. И шаблоны тоже. Не говоря уже про классы. Зачем они вообще нужны? Структур вполне хватает.

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

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



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

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

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

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

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


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

"Спецификация C++0X принята в качестве международного стандар..."
Отправлено Mike Lee , 15-Авг-11 01:28 
ну очевидно ж, чтобы по нормальному использовать stl-ные алгоритмы.

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

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

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

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


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

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


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено anonymous , 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() );

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


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено dq0s4y71 , 15-Авг-11 12:50 
Читаемые? Ха-ха три раза. Зачем из С++ делать Питон? Может быть, лучше сразу писать на Питоне?

"Спецификация C++0X принята в качестве международного стандар..."
Отправлено fr0ster , 15-Авг-11 16:28 
К С++ прицепили парашут тормозной и вышел Питон?

"Спецификация C++0X принята в качестве международного стандар..."
Отправлено Аноним , 15-Авг-11 18:20 
Лямбды не делают из C++ питона. А на питоне лучше вообще ничего не писать.

"Спецификация C++0X принята в качестве международного..."
Отправлено anonymous , 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 и прочие кошерные вещи, которые кучу лет уже как есть и работают. а тут, наконец, и до Зоркого Глаза допёрло, что у сарая стены нет.


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено dq0s4y71 , 15-Авг-11 20:27 
Ну, ладно, ладно, не делают... Неудачный я пример с Питоном привёл, согласен. Смысл был в том, что не надо приспосабливать микроскоп для забивания свай.

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

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

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


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено Vernat , 14-Авг-11 23:37 
но реальной замены ему пока что вроде бы нет

"Спецификация C++0X принята в качестве международного стандар..."
Отправлено dq0s4y71 , 15-Авг-11 12:18 
Реальная замена С++ - это Си.

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

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


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено Аноним , 15-Авг-11 21:58 
> C++ не замена C.

fixed


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено Аноним , 15-Авг-11 00:41 
Расслабься и учи. Других языков всё равно нет.

"Спецификация C++0X принята в качестве международного стандар..."
Отправлено Аноним , 15-Авг-11 10:13 
Есть, причем много. Хороших и разных.

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено inv , 15-Авг-11 00:21 
g++ -std=c++0x

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

Ага

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

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

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


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

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


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

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

Мне надо:

x << (2 << *y)

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

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


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено ананим , 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 не класс к примеру с переопределенным оператором?) в одну строчку, даже если С++ это позволяет (для кого инлаййн придумали? да даже макросы?)


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено inv , 15-Авг-11 16:42 
А если в алгебраическом выражении скобки забудешь, математика тоже станет "сложной и неудобной"?

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

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

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

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

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


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено pavlinux , 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);

---

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


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


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

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


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

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


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

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


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

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


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

"Спецификация C++0X принята в качестве международного стандар..."
Отправлено Вова , 15-Авг-11 01:38 
в какой конторе?

"Спецификация C++0X принята в качестве международного..."
Отправлено anonymous , 15-Авг-11 03:39 
> в какой конторе?

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


"Спецификация C++0X принята в качестве международного..."
Отправлено Аноним , 15-Авг-11 12:52 
> Anonymous, Gmbh -- очевидно же.

Broken & Late, ltd ;)


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

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

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


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

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


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено www2 , 15-Авг-11 07:38 
C++ станет таким же быстрым, как Java, а Java станет такой же надёжной и простой, как C++.

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

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

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

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


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

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


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

"Спецификация C++0X принята в качестве международного..."
Отправлено anonymous , 15-Авг-11 09:05 
не гибче, а монструозней.

"Спецификация C++0X принята в качестве международного..."
Отправлено ProfX , 15-Авг-11 09:19 
Нет, тут есть одна деталь.

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

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


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

"Спецификация C++0X принята в качестве международного стандар..."
Отправлено vaychick , 15-Авг-11 10:45 
А как насчет поддержки MinGW?

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

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

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


"Спецификация C++0X принята в качестве международного..."
Отправлено vivac , 15-Авг-11 11:28 
учитывая что большенство плюшек С99 используется в linux ядре
то вопрос о том кто его проталкивает более чем очевиден

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

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


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

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

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

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

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



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

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


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

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


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

"Спецификация C++0X принята в качестве международного стандар..."
Отправлено Аноним , 15-Авг-11 12:03 
Несовместимости и раньше были. И развиваются они параллельно.

"Спецификация C++0X принята в качестве международного стандар..."
Отправлено gkv311 , 15-Авг-11 13:56 
Кто-нибудь понял зачем они wchar_t сделали независимым от char16_t и char32_t типом? Для того чтобы старые платформо-зависимые Unicode-ные велосипеды остались нетронутыми, но при этом и несовместимыми с новыми типами?

"Спецификация C++0X принята в качестве международного стандар..."
Отправлено barmaglot , 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."


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено Аноним , 15-Авг-11 15:20 
L"This is a wide string."

"Спецификация C++0X принята в качестве международного стандар..."
Отправлено barmaglot , 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 использовать.


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

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


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено barmaglot , 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. Обязательно найдутся вендоры, которые создадут диалекты.


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


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено anonymous , 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-семантики (практическое применение --- оооочень влияет на производительность, если объект удовлетворяет определённым ограничениям).


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено barmaglot , 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. Почитайте внимательно документацию.


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

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

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


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

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

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


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено inv , 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."


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


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено inv , 18-Авг-11 01:14 
Читал я про этот алгоритм, газетка того же года из той же деревни, название запамятовал.
Busy-waiting не самый эффективный способ, но не важно.
Окей, если не TSL, то CMPXCHG.

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

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


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

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

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


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

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


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

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

Пример:

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

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

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

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

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

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

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


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

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

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

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


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

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


"Спецификация C++0X принята в качестве международного стандар..."
Отправлено aborodin , 17-Авг-11 11:32 
Да, понятно. Спасибо.