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/
dev, в новость бы оформил
Списки инициализации и универсальная инициализация!
А шаблоны всяческие - фтопку. Метапрограммирование в с++ не нужно.
jaguard
> А шаблоны всяческие - фтопку. Метапрограммирование в с++ не нужно.
Ололололо!
:trollface: Ада и то чаще обновляется чем С++ :trollface:
jaguard
>А шаблоны всяческие - не нужны.
Коли так, то и С++ - не нужен.
Lamer007
> Коли так, то и С++ - не нужен.
Ну почему не нужен? С++ без шаблонов вполне себе разумная вещь. Есть удобный синтаксис и рудиментарные классы с наследованием и полиморфизмом - все, остальное успешно обрезает бритва Оккама.
jaguard
>Есть удобный синтаксис и рудиментарные классы с наследованием и полиморфизмом - все
Возьмите тогда любой другой язык. Вам его хватит. Смысл С++ без шаблонов сразу исчезнет.
jaguard
> С++ без шаблонов вполне себе разумная вещь. Есть удобный синтаксис и
> рудиментарные классы с наследованием
синтаксис - неудобный, наследование почти всегда - зло, а динамический полиморфизм есть и в Си.
си с шаблонами и более строгой типизацией был-бы лучшим языком, чем C++ без шаблонов.
Что такое "смысл С++"? Смысл любого ЯП - решать прикладные задачи. Решать прикладные задачи, в частности - геймдевить геймы, можно и нужно без шаблонов и вообще без ненужного усложнения кода, творения ненужных сущностей и прочих задротских фокусов. Любой сложный шаблонный код - он write only костыль.
Меня С++ как инструмент вполне устраивает, я пишу предельно простой, четкий императивный код. Но читать чужой код любителя вот таких вот бустоподобных самописных костылей - это адский ад.
ЗЫ:
Я не понял только, вот так по новому стандарту писать все еще нельзя? Вроде в C++0x обещали нечто подобное.
class foo { bool lie; bool truth = true; .... }
Xunter
> синтаксис - неудобный, наследование почти всегда - зло, а динамический
> полиморфизм есть и в Си.
Си фактически является подмножеством С++ и потому не нужен. Никто не мешает использовать c-style конструкции если с++-style не нравятся.
Я к примеру reinterpret_cast (и много чего еще) не использую.
С89 с его определением переменных исключительно в начале функции является невнятным кастратом приличного языка и потому не нужен тем более.
> си с шаблонами и более строгой типизацией был-бы лучшим языком, чем C++ без
> шаблонов.
Зачем нужна строгая типизация? Глупость какая.
jaguard
> Зачем нужна строгая типизация? Глупость какая.
Строгая типизация в том понимании, что переменная как только она в коде появилась, имеет фиксированный тип, и с другими типами (по возможности) не смешивается. Это позволяет генерировать эффективный машинный код.
А вот в том понимании, что ручками прописывать каждый тип, да ещё и в неудобных местах вдали от места первого использования - такая точно не нужна.
Xunter
> си с шаблонами и более строгой типизацией был-бы лучшим языком, чем C++ без
> шаблонов.
+1
slava_mib
> dev, в новость бы оформил ;-)
+1, нуна новость )
jaguard
> Есть удобный синтаксис и рудиментарные классы с наследованием и полиморфизмом
ООП в С++ реализовано довольно убого. В том же Vala (http://live.gnome.org/Vala/Tutorial), который по сути является препроцессором для Си, ООП-возможностей больше.
Есть мнение, что С++ жив только благодаря шаблонам и низкоуровневым возможностям.
Тема в архиве.