Ответ 1
авто ключевое слово для ввода типа переменной
Как многие из нас знают (и многие, и многие другие нет), С++ в настоящее время проходит окончательную редакцию для следующего пересмотра Международного стандарта, который, как ожидается, будет опубликован примерно через 2 года. Черновики и документы в настоящее время доступны на веб-сайте . Добавляются все новые функции, самые большие концепции и лямбды. Существует очень обширная статья Википедии со многими новыми функциями. GCC 4.3 и более поздние версии некоторые функции С++ 0x.
Что касается новых функций, мне очень нравятся черты типов (и соответствующие концепции), но мой определенный лидер - вариативные шаблоны. До 0x, длинные списки шаблонов включали Preprocessor Boost как правило, и очень неприятно писать. Это упрощает работу и позволяет обрабатывать шаблоны С++ 0x как совершенно функциональный язык с использованием вариативных шаблонов. Я уже написал с ними очень классный код, и я не могу больше ждать их использования!
Итак, какие функции вы более всего ожидаете?
авто ключевое слово для ввода типа переменной
Lambdas и списки инициализаторов.
Кроме того, изменения, позволяющие в конечном итоге привести С++ в сборку мусора, выглядят довольно интересными. Возможно, С++ 1x действительно введет сборку мусора, но 0x/10 просто установит все возможное.
Я хочу ссылки Rvalues.
Все другие новые функции - это вещи, с которыми мы могли бы легко жить без (увы). Однако отсутствие Rvalues в С++ до сих пор заставило сотни авторов библиотеки шаблонов "взломать" проблему с исправлением Rvalue ref.
Вариадические шаблоны! (Что в сочетании с ссылками на r-значение дает нам идеальную пересылку!)
Темы и атомы.
Теперь с многоядерными процессорами норма С++ 0x должна была быть С++ 07.
G.
Сильно напечатанные перечисления получают мой голос. Паскаль имел их только около 40 лет, поэтому хорошо видеть, что С++, наконец, догоняет.
Однако публикация стандарта действительно является не-событием. Что гораздо важнее, когда функции, которые вы хотите использовать, на самом деле полностью и надежно поддерживаются с помощью реальных наборов инструментов. Есть люди, которые, похоже, действительно наслаждаются написанием стандартно-совместимого кода, который не компилируется ни в одном известном компиляторе. Удачи им.
Это должно быть включение некоторых из библиотек Boost (shared_ptr < > и привязка верхнего списка)
Контроль над установкой шаблона должен, наконец, решить проблему огромного времени компиляции и сделать фактически возможным использовать современный шаблон кода в больших проектах.
Шаблоны typedefs
Множество других небольших, но важных вещей, но они имеют значение в производственном коде.
Руки вниз для меня. Но списки инициализаторов, lambdas и variadic шаблоны являются близкими секундами.
Я не могу решить между Null Pointer Type, Tuple Типы, или Regex. "Foreach" тоже там. "Умные указатели" само собой разумеется...: -)
В принципе, я действительно жду обновления.
Лично я думаю, что тяжелое использование типа нулевого указателя поймает много ошибок. Кортежи отлично подходят для обработки реляционных данных. Много классных вещей.
Это не большой, но я люблю идею истинного nullptr. Должно быть ключевое слово справа от git -go.
Закрытие для меня.
auto ключевое слово
Lambdas и Концепции
Угловая скобка во вложенных объявлениях шаблонов.
Итак, я смогу написать
std::vector<std::vector<int>> a;
вместо ужасного
std::vector<std::vector<int> > a;
Итерационный синтаксис for (auto x : collection)
выглядит круто, я думаю... он буквально сокращает размер многих заголовков контуров в 4 или более раз (типы итераторов часто... verbose)!
Это также означает, что вам не нужно разыменовывать итератор в теле цикла (с традиционным циклом итератора, вам всегда нужно использовать *i
или i->...
, чтобы получить значение элемента, но здесь вы можете просто использовать x
), что в некоторых случаях делает код намного приятнее.
unicode, многопоточность, hash_tables, интеллектуальные указатели и регулярные выражения.
ps: Интересно, почему они просто не могут просмотреть обзор кода gr8 и принять все уровни boost и tr1 в стандарты и сделать жизнь проще для всех. Все, что им нужно было решить, соглашается на рабочую факультативную модель сбора мусора.
Умные указатели. Это действительно делает мир различий, не имея явно памяти - управляет выделенными кучей объектами.
Очевидно, вам все равно нужно "знать, что вы делаете", но по моему опыту он уменьшил количество ошибок, связанных с памятью, по крайней мере на один порядок в программном обеспечении, с которым я работал.
Синтаксис идет от плохого к худшему.
Шаблоны Variadic и lambdas хороши, хотя синтаксис обоих к сожалению довольно нежелателен.
Мне нравится constexpr
, особенно в сочетании с вариативными шаблонами и определенными пользователем литералами, мы можем, наконец, иметь бинарные литералы и множество других положительных героев.
obj.bitmask |= 00001010B;
REGEX!! и библиотеки параллельного программирования, хотя я еще не знаю их функций.
Строковые литералы! Я думал, что строковые блоки, подобные питону, были потрясающими, но я был неправ! В С++ 0x необработанные строковые литералы невероятно полезны для форматирования текста. Языки разметки могут быть написаны непосредственно в вашем источнике!
На данный момент мне понравилась большая часть С++ 0x, с которой я играл:
Я не пробовал <regexp>
... Я думал, что это огромная идея... но я даже не нашел времени, чтобы посмотреть на нее.