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

Компилировать 14-код С++ с g++

Я использую g++ 4.8.4 на Ubuntu 14.04 LTS. При попытке скомпилировать с '-std = С++ 14', я получаю эту ошибку:

g++: error unrecognized command line option '-std=c++14'

Компиляция с '-std = С++ 11' отлично работает, поэтому я не уверен, что происходит. У g++ действительно нет поддержки для С++ 14? Я использую неправильный вариант командной строки?

Я использовал "sudo apt-get install g++", который должен автоматически получить последнюю версию, верно?

4b9b3361

Ответ 1

Для gcc 4.8.4 вам нужно использовать -std=c++1y в более поздних версиях, похоже, начиная с 5.2 вы можете использовать -std=c++14.

Если мы посмотрим на gcc онлайн-документы, мы найдем руководства для каждой версии gcc, и мы увидим, перейдя в "Диалект" для 4.9.3 в руководстве GCC 4.9.3, он говорит:

"C++ 1у

Следующая версия стандарта ISO С++, предварительно запланированная на 2014 год. Поддержка очень экспериментальная и почти наверняка изменится несовместимо в будущих выпусках.

Итак, до 4.9.3 вам пришлось использовать -std=c++1y, а gcc 5.2 options сказать:

"C++ 14" C++ 1у

Стандарт ISO С++ 2014 плюс поправки. Имя "С++ 1y" устарело.

Мне непонятно, почему это указано в разделе Options Controlling C Dialect, но именно так организованы документы.

Ответ 2

Флаг -std=c++14 не поддерживается в GCC 4.8. Если вы хотите использовать функции С++ 14, вам необходимо скомпилировать с помощью -std=c++1y. Используя godbolt.org, кажется, что самая ранняя версия для поддержки -std=c++14 - это GCC 4.9.0 или Clang 3.5.0

Ответ 3

g++ поддерживает С++ 14 как через -std=c++14, так и -std=c++1y. Последнее было общим названием для стандарта, прежде чем было известно, в каком году он будет выпущен. В более старых версиях (включая ваши) только последний принимается, поскольку год выпуска еще не был известен, когда эти версии были выпущены.

Я использовал "sudo apt-get install g++", который должен автоматически получить последнюю версию, верно?

Он устанавливает последнюю версию, доступную в репозиториях Ubuntu, а не последнюю версию, которая существует.

Последняя версия GCC - 5.2.