Подтвердить что ты не робот

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

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

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

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

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

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

Резюме возможности доступности С++ 0x в gcc и MSVC

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

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

Ответ 5

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

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

Ответ 6

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

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