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 ()

отличная новость, ждем полной поддержки в компиляторах

aho ()

> lambda-функции;
Понравилось.

Gordy ()

>> lambda-функции

Тошнит уже от них. Пихают повсюду, как модный акксесуар, и считают киллер-фичей. Ну и по доброй традиции напомню, что C++ не нужен.

CARS ★★★★ ()

>внешние шаблоны — возможность запретить компилятору инстанцировать шаблон в единице трансляции (extern template class);

И что, это кто-то поддерживает? А как же драма с ключевым словом export?

yoghurt ★★★★★ ()

Надеюсь, GCC 4.7 успеет релизнуться до выхода следующей Slackware

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

> C++ не нужен.

Ок, иди работай дальше в своём паскале.

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

>Ок, иди работай дальше в своём паскале.

в профиль человеку загляни, при чём тут паскакаль?

lazyklimm ★★★★★ ()

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

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

>вывод типов

в новом стандарте есть костыль под названием auto

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

> > C++ не нужен.

Ок, иди работай дальше в своём паскале.

В паскале и плюсах работать невозможно, как невозможно работать «в молотке», «в микроскопе» и «в блокноте с ручкой».

Всегда Ваш, К.О.

rtvd ★★★★★ ()

в бусте же есть некоторые фичи уже давно

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

в новом стандарте есть костыль

C++ --- стройная система костылей и подпорок.

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

> есть костыль под названием auto

И почему это костыль, а не нормальное решение?

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

>boost::shared_prt

boost::scoped_ptr

ехал шаблон через шаблон...

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

>Ну и по доброй традиции напомню, что C++ не нужен. Учетверяю.

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

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

TCO есть уже сто лет в обед, GC в плюсах не нужен - есть подсчет ссылок и умные указатели. Вывод типов? Есть мнение, что нужен только *локальный*, а это уже не больше, чем сахарок...

alienclaster ★★ ()

Ну и где же gc для нового нескучного стандарта?

o4kapuk ()

Время на изучение языка новичками увеличится в разы.

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

в плюсах gc если и нужен, то только в виде отключаемой опции, которая отключена по-дефолту

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

>в виде отключаемой опции, которая отключена по-дефолту

в таком случае я бы назвал её включаемой :)

lazyklimm ★★★★★ ()

Няшно! Надо будет что-нибудь веселое на нем написать

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

И каким он должен быть этот GC?

mark-and-sweep ? reference conunt ?

Под что оптимизрован? Суперкомпьютеры? Или, может, серверы? Микроконтроллеры?

Что придется делать с legacy кодом?

И что насчет overhead?

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

ORLY прямо в разы?

имхо, введение { } для всего, что можно, наоборот немного уменьшит.

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

>Время на изучение языка новичками увеличится в разы.

а зачем? Ведь можно использовать минимально необходимые возможности языка (как многие и делают, кто-то от большого ума, кто-то наоборот)

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

а можно вообще писать не на C++, а «на Qt» или «на бусте» и не парить мозг :)

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

GC в плюсах не нужен - есть подсчет ссылок и умные указатели

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

Вывод типов? Есть мнение, что нужен только *локальный*

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

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

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

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

>а можно вообще писать не на C++, а «на Qt» или «на бусте» и не парить мозг :)

можно, но как отлаживать этот ад шаблонов - проще повеситься

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

Что придется делать с legacy кодом?

Достать чернил и плакать.

И что насчет overhead?

А сейчас?

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