Как стать автором
Обновить

Поддержка C++0x в Visual Studio 2010

Время на прочтение3 мин
Количество просмотров7.3K
Тема поддержки нового стандарта C++0x различными компиляторами представляет наибольший интерес, т.к. совсем недавно был опубликован финальный черновик Комитета по стандартизации C++0x — C++0x Final Committee Draft(FCD), а это в свою очередь значит что в ближайшие два года стандарт будет полностью принят. И если сравнивать с предыдущей Visual Studio 2008(VC9), то в ней уже были сделаны пару основных фишек из нового стандарта.


Существует как минимум два источника, из которых можно узнать работает то или иное нововведение C++0x в VC++10. Первым из этих источников является оффициальный блог Visual C++ Team Blog. C недавних пор о нововведениях из стандарта в этом блоге сообщает Stephan T. Lavavej, который уже пару лет является разработчиком библиотек Visual C++ в Microsoft. Наибольший интерес в блоге представляет последнее сообщение, в котором публике была представлена сводная таблица поддержки нововведений стандарта C++0x в новой RC1-версии компилятора VC10.

Небезызвестный Скотт Мейерс выложил в интернет другой документ, где он полностью сравнил поддерживаемые фишки из стандарта C++0x на основе сразу нескольких компиляторов — GCC 4.3/GCC 4.4/MSVC9/MSVC10B2, правда, как видно — на примере не самой последней версии VS Beta 2.

Отец нового стандарта, Бъерн Страуструп не остался в стороне и написал то, что он думает по поводу нового стандарта. Очень интересный и поучительный документ, с которым советую ознакомиться каждому и понять философию C++0x. Согласно докладу, сделанному однажды Бъерном, новый стандарт будет полностью совместим с нынешней версией языка.

Рассмотрим некоторые из заметных нововведений языка, поддерживаемых в VC++ 2010.

Лямбда-выражения
Лямбда-выражения являются представлением безымянных локальных функций, по сути дела — анонимные функторы.
Лямбда-выражения уже много где существуют — библиотека boost, C# 3.0, Python 2.5, некоторое подобие лямбда-выражений есть и в Mathematica. Сейчас лямбда выражения полностью поддерживаются в новой VS 2010. В стандарте лямбда-выражения представлены предложением Proposal N2927.

Пример использования лямбда-выражений для печати элементов вектора:
for_each(vec.begin(), vec.end(), [](int _n){cout << _n << " ";});

На Хабрахабре есть небольшая хорошая статья по лямбда-выражениям:
C++0x. Лямбда-выражения / C++ / Хабрахабр
Stephan T. Lavavej давно написал обзор лямбда-выражений, а также про применимость новых ключевых слов auto и static_assert. Все это конечно поддерживается новой VC2010.

Rvalue ссылки
Это нововведение позволит различить временные и невременные объекты, увеличив тем самым производительность приложения, избавившись от лишних операций копирования(move semantics). Теперь любое возвращаемое значение из ф-ции интерпретируется как rvalue.
Более подробная информация:
Rvalue Reference Declarator: &&
Visual C++ Team Blog: Rvalue References: C++0x Features in VC10, Part 2
Proposed wording for rvalue reference R3
Новый стандарт C++: C++09 -> Форум на Исходниках.Ру

Есть такой сайт, как Википедия, по новому стандарту там тоже есть статейка, однако не стоит ей сильно доверять, там могут быть ошибки. Лучшим документом по новому стандарту все-таки является C++0x Final Committee Draft(FCD).

Напомню, что как и предыдущая Beta2, Visual Studio 2010 RC1 имеет статус «Go Live», соответственно уже сейчас все желающие могут начать разрабатывать коммерческие приложения.

Дополнительные материалы:

Новый стандарт C++: C++09 -> Форум на Исходниках.Ру
Краткий обзор C++0x [1] — Конференция iXBT.com
Visual C++ Team Blog: C++0x Core Language Features In VC10: The Table
visual studio 2010 / Метки / Хабрахабр

Обзор участвует в конкурсе, автора можно поблагодарить, проголосовав здесь.
Теги:
Хабы:
+9
Комментарии10

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн