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