Почему "-std = С++ 0x" все еще необходим для g++ 4.6.2?
Я загрузил и построил gcc 4.6.2. Я нахожу, что для функций С++ 11 опция командной строки -std=c++0x
по-прежнему необходима. Почему это? Не предполагается ли поддержка по умолчанию?
$ g++ --version
g++ (GCC) 4.6.2
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Ответы
Ответ 1
Потому что
- С++ 11 всего 4 месяца, и поддержка для него далека от завершения или тестирования.
- изменение значения по умолчанию без большого объявления и фазы подготовки для людей не приятно
- Неясно, изменится ли значение по умолчанию (см. -std = C99).
Ответ 2
Чтение веб-сайта GCC:
Статус экспериментальной поддержки С++ 0x в GCC 4.6
Таким образом, вы не можете сделать что-то экспериментальное.
Более того, это было до стандартного выпуска С++ 11, и фактическое имя не было определено, что объясняет, почему С++ 0x, а не С++ 11.
Если вас интересует GCC 4.7, он все еще экспериментальный:
Статус экспериментальной поддержки С++ 11 в GCC 4.7
Ответ 3
Он по-прежнему необходим и, вероятно, останется таким в обозримом будущем, потому что С++ 11 имеет несовместимости с С++ 03. Изменение g++ для компиляции С++ 11 по умолчанию приведет к разрыву большого количества существующего кода.
Ответ 4
Я думаю, что тот факт, что он называется 0x
, дает вам подсказку. Он даже не завершен (см. http://gcc.gnu.org/projects/cxx0x.html)