Переход на C ++ 11 - PullRequest
       31

Переход на C ++ 11

22 голосов
/ 16 марта 2010

Мы собираемся начать длительный проект с использованием C ++ в качестве языка программирования.

Я читал, что C ++ 0x выйдет в 2011 году, поэтому они назвали его C ++ 11.

Когда выйдет C ++ 11, мы все еще будем разрабатывать проект и хотели бы знать, возможно ли сейчас использовать какие-либо функции нового стандарта C ++, чтобы иметь возможность:

  • код быстрее, чем со старым C ++ и
  • легко переключаться при появлении нового стандарта?

Ответы [ 6 ]

14 голосов
/ 16 марта 2010

На этой странице показаны части C ++ 0x, поддерживаемые gcc (основным компилятором Unix), MSVC (основным компилятором Microsoft) и некоторыми другими (включая Intel). Дополнительная информация для Clang: здесь , хотя я думаю, что их поддержка c ++ для текущих стандартов все еще не завершена.

13 голосов
/ 16 марта 2010

Тот факт, что стандарт вышел, не означает, что компиляторы волшебным образом обновляются - большинству компиляторов потребовались годы, чтобы обеспечить разумную поддержку предыдущего стандарта, а некоторые функции так и не получили такой поддержки, как экспорт (исключено из C +) + 0x). В зависимости от первых реализаций новых функций это тоже не очень хорошая стратегия - я предпочитаю, чтобы другие были экспериментаторами, если я работаю до крайнего срока.

Кроме того, я бы не стал слишком быстро называть это C ++ 11 - процесс стандартизации таит в себе возможности для задержки.

Редактировать: Я вижу, вы используете библиотеки RW. В этом случае, вероятно, многие функции нового Стандарта не будут представлять непосредственного интереса, поскольку они предназначены для разработчиков шаблонов и пользователей библиотеки C ++ Standard.

4 голосов
/ 16 марта 2010

Скотт Мейерс (автор серии "Effective C ++") загрузил на прошлой неделе следующее:

Сводная информация о доступности функций C ++ 0x в gcc и MSVC

В некотором смысле это похоже на другую ссылку , упомянутую в другом ответе в этой теме. Главное отличие в том, что ссылка Мейерса содержит только то, что он сам испробовал. Я ожидаю, что он будет обновляться в ближайшие месяцы.

Кроме того, и вот как я узнал об этом, он намекал на comp.std.c ++ , что он работает над чем-то связанным с учебным материалом C ++ 0x (очевидно, за пределами его учебного курса) но сейчас это слишком умозрительно, поэтому давайте просто перейдем к первой ссылке, которую я предоставил выше.

4 голосов
/ 16 марта 2010

Visual C ++ 2010 и последние версии gcc (-std = c ++ 0x) имеют поддержку новых функций C ++ 11, но не все из них.В частности, вы можете начать использовать новый синтаксис инициализатора с фигурными скобками;это IMHO самое большое изменение синтаксиса в C ++ 11.Это также изменение, которое добавит больше несоответствий в ваш код, если одна часть использует стиль C ++ 98, а другая - стиль C ++ 11.

2 голосов
/ 16 марта 2010

Не думайте, что вы переключаетесь на все новые функции одновременно. Оцените каждую новую языковую функцию с учетом ее достоинств и качества ее реализации.

Например, long long было довольно распространенным расширением компилятора еще до того, как оно рассматривалось для C ++ 0x, и новый синтаксис auto полезен и, вероятно, будет хорошо поддерживаться. Возможно, вы захотите быть очень осторожными с некоторой сложной комбинацией нескольких новых функций, таких как вывод типа с decltype для функции с новым синтаксисом -> внутри класса, использующей шаблоны с переменными числами и новые правила синтаксического анализа >>.

1 голос
/ 16 марта 2010

это зависит от того, какой компилятор вы используете.

Например, GCC имеет расширение tr1, которое содержит некоторые функции, которые будут в C ++ 11.

...