В настоящее время с g ++ — 4.8.1 вы должны скомпилировать файл в режиме C ++ 11 через
g++ -std=c++11 -o prog.x prog.cpp
Есть ли план, когда я просто могу сказать
g++ -o prog.x prog.cpp
Скомпилировать prog.cpp
?
Может быть prog.cpp
имеет
#include <regex>
thread_local
class Widget { int member = 5; }
MyType operator"" myt(const char*, sze_t);
GCC 6.0: https://gcc.gnu.org/gcc-6/changes.html
Режим по умолчанию для C ++ теперь
-std=gnu++14
вместо-std=gnu++98
,
Я думаю, что наиболее близким к ответу, который я могу получить, является info gcc
команда:
Пересмотренный стандарт ISO C ++ был опубликован в 2011 году как ISO / IEC
14882: 2011 и упоминается как C ++ 11; до его публикации это было
обычно упоминается как C ++ 0x. C ++ 11 содержит несколько изменений в
Язык С ++, большинство из которых были реализованы в экспериментальной
Режим C ++ 11 в GCC. Для получения информации о возможностях C ++ 11
доступно в экспериментальном режиме C ++ 11, см.
http://gcc.gnu.org/projects/cxx0x.html. Чтобы выбрать этот стандарт в
GCC, используйте опцию ‘-std = c ++ 11’; получить всю диагностику
в соответствии со стандартом, вы также должны указать ‘-pedantic’ (или
‘-pedantic-errors’, если вы хотите, чтобы они были ошибками, а не
предупреждения).
http://gcc.gnu.org/projects/cxx0x.html Страница говорит:
Важно: поддержка GCC для C ++ 11 все еще является экспериментальной. Немного
функции были реализованы на основе ранних предложений, и никаких попыток
будет сделано для обеспечения обратной совместимости при их обновлении
соответствовать окончательному стандарту C ++ 11.
libstdc ++ Страница также показывает, что она неполная. (Я даже не думаю, regex
еще реализовано.)
Ответ Стива Джессопа в основном говорит то же самое в последнем абзаце, но процитирую первую часть своего ответа:
C ++ 11 был стандартом в течение нескольких лет, но компилятор не
собираюсь переключить режим по умолчанию на C ++ 11 до тех пор, пока:
- Как минимум, поддержка C ++ 11 в этом компиляторе и библиотеках, которые он использует, завершена. А также стабильный, если компилятор
писатель имеет какое-либо беспокойство по поводу надежности.- Желательно, чтобы основной номер версии увеличивался в компиляторе, поскольку C ++ 11 не полностью обратно совместим с C ++ 03.
- В идеале, по хорошо известному графику, чтобы пользователи могли подготовиться к изменениям.
ОБНОВИТЬ: Первоначальный ответ устарел за последние 28 месяцев. В соответствии с ответ Нобара, GCC 6.1 по умолчанию поддерживает C ++ 14 с расширениями GNU. GCC 6.1 был выпущен 27 апреля 2016 года. Я очень удивлен, но очень рад видеть такое быстрое принятие нового стандарта!
Что касается остальной части исходного ответа, я все еще вижу ценность в сохранении той части, которая отвечает, как сделать определенные флаги «по умолчанию». Поэтому я сохранил это ниже.
Есть ли план, когда я просто могу сказать […]
Вы можете определить флаги по умолчанию в Makefile, а затем все, что вам нужно сказать, это make
,
Принятый ответ на Как включить C ++ 11 в gcc? следует начать (или некоторые учебник по makefile).
Еще один совет, который часто появляется здесь, в Stackoverflow, — добавить псевдоним bash. alias g++="g++ --std=c++0x"
, увидеть Вот как. Однако лично я бы не стал этого делать, это может привести к неприятным сюрпризам; с C ++ 11 произошли серьезные изменения. Я хотел бы создать свой собственный make-файл и просто набрать make
,
Похоже, что в GCC 5.0 по умолчанию будет gnu11 (диалект c ++ 11 AFAIK) с улучшениями в c ++ 11, которые будут использоваться в изменениях. Увидеть https://gcc.gnu.org/gcc-5/changes.html . Кажется, он также будет иметь некоторую поддержку C ++ 14.
Одно из наиболее интересных утверждений относительно сценария bugzilla, которое разделяет @ marc-glisse, похоже, не обсуждается, см. https://gcc.gnu.org/gcc-5/criteria.html для деталей: —
Все открытые в Bugzilla регрессии были проанализированы, и все они
считается маловероятным, чтобы повлиять на большинство пользователей, или намерены
оказать минимальное влияние на пострадавших пользователей. Например, типографский
ошибка в диагностике может быть относительно распространенной, но также имеет минимальную
влияние на пользователей.В общем, регрессии, когда компилятор генерирует неправильный код,
или отказывается составить действительную программу, будет считаться
достаточно серьезный, чтобы заблокировать выпуск, если нет существенных
смягчающие факторы. — Страница критериев выпуска GCC
Сроки действительно дают некоторое представление о том, когда и если это произойдет https://gcc.gnu.org/develop.html#timeline
Поэтому, надеюсь, мы увидим новый gcc с поддержкой c ++ 11 по умолчанию к 2015 году. Когда дистрибутивы GNU / Linux возьмутся за работу и сделают все, что им нужно, для программ, создаваемых с c ++ 11, это еще один вопрос.