Лямбды , потому что они, наконец, вводят разумные средства использования преимуществ функционального программирования.
Циклы for на основе диапазона.
for (int x: numbers) std::cout << x << " ";
Ура!
Лично я считаю, что семантика перемещения (и ссылки на rvalue в целом) являются наиболее важным изменением, наравне с потоками/блокировками/атомами. Все остальное — это, более или менее, упрощение синтаксиса или стандартизация общих сторонних решений — мы можем писать функторы, когда нам нужны лямбды, и у нас есть многочисленные библиотеки regex.Даже из-за отсутствия атомарных операций были некоторые решения, но не было конструкторов перемещения/операторов назначения перемещения.
Способность перемещать предметы меняет все восприятие языка для меня. Несмотря на то, что у нас уже был RVO и трюк с переходом на временное, чтобы подражать некоторым из них, трудно представить, как меняется жизнь, когда это является частью повседневной жизни. Это не просто ofstream("log.txt") << "Привет!";
, или гораздо более быстрые алгоритмы STL, это совершенно новый способ передачи данных между функциями.
Поддержка Юникода. Больше никаких булыжник и хаков, чтобы получить правильную обработку символов юникода - теперь весь стандарт юникода изначально поддерживается языком.
Стандартные средства для потоковой передачи и синхронизации.
Мы перешли на 2010 год около месяца назад. Две наиболее распространенные вещи, которые мы использовали, - это авто и лямбда. Ссылки на Rvalue позволили мне сделать много вещей, которые раньше были невозможны, но в повседневном использовании они не используются как лямбда и авто.
Это отличная статья о новых функциях. Расширение нового стандарта C ++ (C ++ 0x) и его реализация в VC10
Ключевое слово auto Для автоматического определения типа данных (во время компиляции ) в зависимости от инициализации.
Ключевое слово decltype Для выведения типа данных из выражения или автоматической переменной
Ключевое слово nullptr Нулевой указатель теперь повышено, и ему было присвоено ключевое слово!
Ключевое слово static_assert Для утверждений времени компиляции. Полезно для шаблонов и проверок, которые нельзя выполнить с помощью #ifdef.
Лямбда-выражения Локально определенные функции. Наследует функции от указателей на функции и объектов класса (функторов).
Конечные возвращаемые типы В основном полезно, когда тип возвращаемого значения шаблонной функции не может быть выражен.
Ссылки R-значения Семантика перемещения - использование ресурсов до того, как временный объект будет уничтожен.
также описаны новые возможности нового компилятора Microsoft
Концепции . Наконец, мы сможем проверять типы шаблонов перед их созданием, и когда мы создадим их некорректно, мы получим разумные сообщения об ошибках. Ой! Комитет C ++ 0X не смог согласиться и в конце концов выбросил их. Ну что ж, подождите C ++ 1X ...
Регулярные выражения как стандартная библиотека - вы знаете, что они вам нужны.
auto в циклах for, и lambdas для алгоритма, я начну массовое использование for_each.