Ответ 1
GCC 6.0: https://gcc.gnu.org/gcc-6/changes.html
Режим по умолчанию для С++ теперь
-std=gnu++14
вместо-std=gnu++98
.
В настоящее время с g++ - 4.8.1 вам нужно скомпилировать файл в режиме С++ 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
Режим по умолчанию для С++ теперь
-std=gnu++14
вместо-std=gnu++98
.
Самый близкий, который я думаю к ответу, который я могу получить, - это команда info gcc
:
Пересмотренный стандарт ISO С++ был опубликован в 2011 году как ISO/IEC 14882: 2011, и называется С++ 11; до его публикации обычно называемый С++ 0x. С++ 11 содержит несколько изменений в Языка С++, большинство из которых были реализованы в экспериментальном С++ 11 в GCC. Для получения информации о возможностях С++ 11 доступных в экспериментальном режиме С++ 11, см. http://gcc.gnu.org/projects/cxx0x.html. Чтобы выбрать этот стандарт в GCC, используйте опцию '-std = С++ 11'; получить всю диагностику требуемый стандартом, вы также должны указать "-специальный" (или '-pedantic-errors', если вы хотите, чтобы они были ошибками, а не предупреждения).
Страница http://gcc.gnu.org/projects/cxx0x.html говорит:
Важно: поддержка GCC для С++ 11 все еще экспериментальна. Некоторые функции были реализованы на основе ранних предложений, и никаких попыток будут созданы для обеспечения обратной совместимости при их обновлении чтобы соответствовать окончательному стандарту С++ 11.
Страница libstdc++ также показывает, что она неполна. (Я даже не думаю, что regex
реализовано еще.)
Ответ Стив Джессопа в основном говорит то же самое в последнем абзаце, но процитировать первую часть его ответа:
С++ 11 был стандартным для пары лет, но компилятор не переключение режима по умолчанию на С++ 11 до:
- При абсолютном минимуме поддержка С++ 11 завершена в этом компиляторе и библиотеках, которые он использует. А также стабильный, если компилятор писатель имеет любую озабоченность по надежности.
- Желательно, чтобы в компиляторе увеличилось число основных версий, поскольку С++ 11 не полностью совместим с С++ 03.
- В идеале, в хорошо известном расписании, чтобы пользователи могли подготовиться к изменениям.
ОБНОВЛЕНИЕ: Оригинальный ответ устарел за последние 28 месяцев. Согласно благородный ответ, GCC 6.1 поддерживает С++ 14 с расширениями GNU по умолчанию. GCC 6.1 был выпущен 27 апреля 2016 года. Я очень удивлен, но очень рад видеть такое быстрое принятие нового стандарта!
Что касается остальной части исходного ответа, я по-прежнему вижу ценность в том, что эта часть отвечает, как сделать определенные флаги "по умолчанию". Поэтому я сохранил его ниже.
Есть ли план, когда я могу сказать [...]
Вы можете определить флаги по умолчанию в Makefile, а затем все, что вам нужно сказать, это make
.
Принятый ответ Как включить С++ 11 в gcc?, вы должны начать (или несколько учебник по makefile).
Еще один совет, который часто появляется здесь в Stackoverflow, заключается в добавлении псевдонима bash alias g++="g++ --std=c++0x"
, см. здесь. Однако я лично этого не сделал, но это может привести к неприятным сюрпризам; в С++ 11 произошли изменения. Я бы создал свой собственный make файл и набрал просто make
.
Кажется, что GCC 5.0 будет иметь gnu11 (диалект С++ 11 AFAIK) по умолчанию с улучшениями в С++ 11 как разделяемые в изменениях. См. https://gcc.gnu.org/gcc-5/changes.html. Кажется, у него будет поддержка и С++ 14.
Одно из наиболее интересных утверждений относительно сценария bugzilla, которое поделилось с помощью @marc-glisse, похоже, находится вне таблицы, см. https://gcc.gnu.org/gcc-5/criteria.html для деталей: -
Все регрессии, открытые в Бугзилле, были проанализированы, и все они считаются либо маловероятными для большинства пользователей, либо оказывают минимальное влияние на затронутых пользователей. Например, типографский ошибка в диагностике может быть относительно распространенной, но также минимальная влияние на пользователей.
В целом, регрессии, в которых компилятор генерирует неправильный код, или отказывается составлять действительную программу, будет считаться достаточно серьезными, чтобы блокировать выпуск, если нет существенных смягчающих факторов. - Страница критериев выпуска GCC
Временная шкала дает некоторое представление о том, когда и если это произойдет https://gcc.gnu.org/develop.html#timeline
Итак, мы надеемся, что к 2015 году мы увидим новую версию gcc с поддержкой С++ 11. Когда будут распространяться дистрибутивы GNU/Linux и делать то, что им нужно сделать для программного обеспечения, созданного с помощью С++ 11, - это еще один вопрос,