LINUX.ORG.RU

Опубликован стандарт C++11 (бывший C++0x)

 , ,


0

4

ISO объявила о публикации стандарта C++11. Это первое значительное изменение стандарта с 1998-го года. Вот несколько новых объявленных возможностей:

  • ссылки на временные объекты и семантика переноса (rvalue reference);
  • обобщённые константные выражения (ключевое слово constexpr);
  • внешние шаблоны — возможность запретить компилятору инстанцировать шаблон в единице трансляции (extern template class);
  • ключевое слово auto для задания типа переменной на этапе компиляции;
  • цикл for по коллекции данных;
  • lambda-функции;
  • введена отдельная константа нулевого указателя nullptr;
  • шаблоны с переменным числом параметров (variadic templates);
  • thread-local хранилище, модель памяти с поддержкой потоков;
  • изменения в стандартной библиотеке: включение hash tables, регулярных выражений, smart pointers, элементов синхронизации потоков и т.п.

Полный список новых возможностей с подробным объяснением каждой из них можно посмотреть на http://en.wikipedia.org/wiki/C 11 или же более сжато на русском: http://ru.wikipedia.org/wiki/C 11

Полная поддержка C++11 обещается в GCC 4.7, объем поддержки на текущий момент можно оценить по таблице http://gcc.gnu.org/onlinedocs/libstdc /manual/status.html#status.iso.200x

ISO продает текст стандарта по 352 швейцарских франка ($386), но можно бесплатно скачать, например, его финальный черновик (практически не отличающийся от конечной версии) с сайта рабочей группы: http://www.open-std.org/jtc1/sc22/wg21/

>>> Пресс-релиз

★★

Проверено: maxcom ()

Ответ на: комментарий от ugoday

> Предсказываю: rогда его добавят в следующей версии стандарта

Его _уже_ добавили.

tailgunner ★★★★★ ()
Ответ на: комментарий от o4kapuk

>так как там нет всяких GC и прочих плюшек новомодных быстрокодерских языков

ты про хаскель?

lazyklimm ★★★★★ ()
Ответ на: комментарий от ugoday

> Относительно недавно все доказывали, что вывод типов вообще нафиг не нужен. Предсказываю: rогда его добавят в следующей версии стандарта, все будут доказывать его необходимость.

он уже есть, decltype + auto

aho ()
Ответ на: комментарий от ugoday

> А когда в С++ добавят GC, TCO и вывод типов?

Вывод типов там уже очень давно. А GC там нафиг сдался. (Хотя, есть кастомные реализации для особо жаждущих).

segfault ★★★★★ ()
Ответ на: комментарий от o4kapuk

С технической стороны вопроса GC не нужен вообще.

Так же, я уверен, не нужны:

  • ссылки на временные объекты и семантика переноса (rvalue reference);
  • обобщённые константные выражения (ключевое слово constexpr);
  • внешние шаблоны — возможность запретить компилятору инстанцировать шаблон в единице трансляции (extern template class);
  • ключевое слово auto для задания типа переменной на этапе компиляции;
  • цикл for по коллекции данных;
  • lambda-функции;
  • введена отдельная константа нулевого указателя nullptr;
  • шаблоны с переменным числом параметров (variadic templates);
  • thread-local хранилище, модель памяти с поддержкой потоков;
  • изменения в стандартной библиотеке: включение hash tables, регулярных выражений, smart pointers, элементов синхронизации потоков и т.п.
ugoday ★★★★★ ()

> введена отдельная константа нулевого указателя nullptr;

Если она еще и не равна NULL, то расстрелять их мало. А так - не нужно.

segfault ★★★★★ ()
Ответ на: комментарий от ugoday

> Так же, я уверен, не нужны:

Крепок ли ты в вере своей?

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Это не вера. Это анализ мегабайтов лоровских ЯП-срачей.

ugoday ★★★★★ ()

толсто {
По современности поддерживаемых фич создатели стандарта Ц++11 добрались до 2003 года. Молодцы.
}

ovk48 ★★★ ()

> ISO продает текст стандарта по $18,

Если верить ISO store, то это:
352 Swiss francs = 386.89728 U.S. dollars

Откуда инфа про $18?

rival ★★ ()
Ответ на: комментарий от segfault

>Если она еще и не равна NULL, то расстрелять их мало.

Зависит от реализации. Скорее, предполагается, что NULL будет определяться не как (void*)0, а через nullptr.

Со stackoverflow про NULL в C++11: «It is up to each implementation to provide its own definition, gcc if I recall correctly defines it to __nullptr for which it has special checks (verifies that it is not used in arithmetic contexts for example)».

vden ★★ ()
Ответ на: комментарий от x4DA

Ну хотя бы tracing, non-conservative, incremental. Все для жтого есть. Легаси не пострадает. Про оверхед расскажи своему оператору копирования.

arturpub ★★ ()

Эх, такую энергию, да на развитие D2…

AX ★★★★★ ()
Ответ на: комментарий от CARS

> что C++ не нужен.

Хочется по конструктивней доводы. Просто для собственного интереса.

beda ()
Ответ на: комментарий от AX

> Эх, такую энергию, да на развитие D2…

чтоб его поломать и сделать D3?

aho ()
Ответ на: комментарий от rival

>352 Swiss francs = 386.89728 U.S. dollars

Точно. Куда-то не туда посмотрел.

vden ★★ ()

>ключевое слово auto для задания типа переменной на этапе компиляции;

Приятно видеть, что они таки пытаются эволюционировать. Жаль только, что надо было это сделать 10 лет назад, а сейчас какбэ поздно боржоми пить.

kranky ★★★★★ ()

> thread-local хранилище, модель памяти с поддержкой потоков

И как это будет работать в ОС без поддержки потоков?

Кажется, проблем с ними нет всего в 2х-3х системах.

unsigned ★★★ ()
Ответ на: комментарий от o4kapuk

вы когда-нибудь отлаживали многопоточные программы, где были проблемы с памятью и бились головой об стену?

я - да.

это к тому, что не нужен.

x4DA ★★★★★ ()
Ответ на: комментарий от x4DA

>что там, кстати, с этим D? еще шевелится?

Шевелится, только не стабилизируется никак.

AX ★★★★★ ()

Почитал wiki.

- For-цикл по коллекции - интересно
- Лямбда-функции - тоже интересно
- Явное замещение виртуальных функций и финальность - интересно, хотя для этого обычно использовал чистые виртуальные функции;
- Константа нулевого указателя - наконец-то! А я думал, когда они уже посмотрят на pascal'евский nil !
- Новые строковые литералы - отлично!
- Работа sizeof с элементами данных в классах без создания объекта - а я думал оно и так работает...
- Управление потоками - отлично
- Регулярные выражения - отлично

И - да, кроме С++, остальные языки не нужны.

Kroz ★★★★★ ()
Ответ на: комментарий от unsigned

«а ты раздефайнил NULL в своем проекте?»

x4DA ★★★★★ ()
Ответ на: комментарий от o4kapuk

GC в плюсах нужен только для того, чтобы не выросло поколение фанатиков, которые говорят, что C++ не нужен, так как там нет всяких GC и прочих плюшек новомодных быстрокодерских языков. С технической стороны вопроса GC не нужен вообще.

Медленный кодер - мёртвый кодер. Ну или, как вариант, голодный.

mv ★★★★★ ()
Ответ на: комментарий от Kroz

кроме С++, остальные языки не нужны.

А откуда тогда С++ будет тырить интересные и отличные фичи?

ugoday ★★★★★ ()
Ответ на: комментарий от vden

Скорее, предполагается, что NULL будет определяться не как (void*)0, а через nullptr.

А он и так не 0. Есть платформы, на которых C++ существует, но NULL там не равен 0.

mv ★★★★★ ()
Ответ на: комментарий от mv

> Есть платформы, на которых C++ существует, но NULL там не равен 0.

О кстати, не напомнишь, что это за экзотика?

tailgunner ★★★★★ ()
Ответ на: комментарий от mv

> Есть платформы, на которых C++ существует, но NULL там не равен 0.

в С++ NULL по стандарту равен 0

aho ()
Ответ на: комментарий от tailgunner

О кстати, не напомнишь, что это за экзотика?

IIRC s390, вполне себе ещё живой в виде z/Architecture.

mv ★★★★★ ()
Ответ на: комментарий от aho

в С++ NULL по стандарту равен 0

Очень глупо.

mv ★★★★★ ()

какого члена auto_ptr deprecated и где мои rope?

alx_me ★★☆ ()

Если obj-c — помесь C и Smalltalk, то C++ — помесь C и Perl.

PolarFox ★★★★★ ()
Ответ на: комментарий от ugoday

> А когда в С++ добавят GC, TCO и вывод типов?

Третье — почти, первое — никогда. А второе не знаю что и означает, просвятите?

sv75 ★★★★★ ()
Ответ на: комментарий от Kroz

> Работа sizeof с элементами данных в классах без создания объекта - а я думал оно и так работает...

Я тоже думал, а потом писал sizeof(*(TYPE*)NULL) D-;

alx_me ★★☆ ()
Ответ на: комментарий от sv75

Какой-нибудь тэйл колл оптимизэйшн, скорее всего.

CARS ★★★★ ()
Ответ на: комментарий от Kroz

> И - да, кроме С++, остальные языки не нужны.

Где-то явно есть конвейер по производству дебилов.

sv75 ★★★★★ ()

Вот я почему-то давно хотел properties. Костылей наделали (в борланде, например). Но хотелось бы в стандарте...

yurkis ()
Ответ на: комментарий от sv75

TCO --- тайл колл оптимизейшн, пресловутая хвостовая рекурсия.

ugoday ★★★★★ ()

variadic templates - самое главное, хотя rope-ов жалко.

alx_me ★★☆ ()
Ответ на: комментарий от ugoday

что-то мне подсказывает, что рекурсивную функцию, полагающуюся на TCO, в C++ можно переписать в виде цикла.

x4DA ★★★★★ ()
Ответ на: комментарий от PolarFox

> Если obj-c — помесь C и Smalltalk, то C++ — помесь C и Perl.

ЕМНИП, C++ старше Perl.

tailgunner ★★★★★ ()
Ответ на: комментарий от yurkis

Начига в языке peroperties?

гораздо проще библиотекой.

alx_me ★★☆ ()
Ответ на: комментарий от aho

говорить то, чего не знаешь - да

Получается, что 0 в качестве нуль-пойнтера - это special value, который должен поддерживаться рантаймом. Т.е. генерируемый код и рантайм языка должны знать, что если в пойнтере содержится 0, то это нифига не интегральный 0, а специальное значение, равное null.

УмнО, чо... Такой C++.

mv ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.