C ++ 11 — Почему произошла эта ошибка? сборка библиотеки c ++

Я не знаю, почему происходит эта ошибка.

Я использую nghttp2 на Centos 7.

Мой Centos поддерживает C ++ 17

Я забыл какие-либо варианты?

Помоги мне, пожалуйста.

Спасибо.


USR / включать / C ++ / 4.8.2 / бит / C ++ 0x_warning.h: 32: 2: ошибка: #error Этот файл требует поддержки компилятора и библиотеки для стандарта ISO C ++ 2011. Эта поддержка в настоящее время является экспериментальной и должна быть включена с помощью опций компилятора -std = c ++ 11 или -std = gnu ++ 11.
#error Этот файл требует поддержки компилятора и библиотеки для \
  ^
В файле из util.h: 52: 0,
от util.cc:25:
template.h: 44: 19: предупреждение: шаблоны переменных доступны только с -std = c ++ 11 или -std = gnu ++ 11 [включено по умолчанию]
шаблон <имя типа ... T>
                   ^
template.h: 45: 1: ошибка: «constexpr’Не называет тип
constexpr std :: array<
 ^
template.h: 45: 1: нота: C ++ 11 ‘constexprДоступны только с -std = c ++ 11 или -std = gnu ++ 11
template.h: 54: 33: ошибка: «constexpr’Не называет тип
шаблон <имя T, size_t N> constexpr size_t array_size (T (&) [N]) {
                                 ^
template.h: 54: 33: нота: C ++ 11 ‘constexprДоступны только с -std = c ++ 11 или -std = gnu ++ 11
template.h: 58: 33: ошибка: «constexpr’Не называет тип
шаблон <имя T, size_t N> constexpr size_t str_size (T (&) [N]) {
                                 ^
template.h: 58: 33: нота: C ++ 11 ‘constexprДоступны только с -std = c ++ 11 или -std = gnu ++ 11
template.h: 64: 31: предупреждение: шаблоны переменных доступны только с -std = c ++ 11 или -std = gnu ++ 11 [включено по умолчанию]
шаблон <typename F, typename ... T> struct Defer {
                               ^
template.h: 65: 11: ошибка: ожидается ‘,' или же '...' до '&&Знак
Перенести (F &&ф, т &&... т)
           ^
template.h: 67: 15: ошибка: ожидается ‘,' или же '...' до '&&Знак
Перенести (Defer &&o) noexcept: f (std :: move (o.f)) {}
               ^
template.h: 67: 18: ошибка: неверный конструктор; Вы, вероятно, имели в виду ‘nghttp2 :: Defer<F, T> (const nghttp2 :: Defer<F, T>&)»
Перенести (Defer &&o) noexcept: f (std :: move (o.f)) {}
                  ^
template.h: 67: 18: ошибка: ожидается ‘;В конце декларации члена
template.h: 67: 20: ошибка: «noexcept’Не называет тип
Перенести (Defer &&o) noexcept: f (std :: move (o.f)) {}
                    ^
template.h: 70: 9: ошибка: ожидаемый спецификатор вложенного имени перед beforeResultType»
используя ResultType = typename std :: result_of<typename std :: decay<F>::тип(
         ^
template.h: 70: 9: ошибка: использование-объявление для не члена в области видимости класса
template.h: 70: 20: ошибка: ожидается ‘;' до 'знак равноЗнак
используя ResultType = typename std :: result_of<typename std :: decay<F>::тип(
                    ^
template.h: 70: 20: ошибка: ожидаемый безусловный идентификатор перед beforeзнак равноЗнак
template.h: 72: 3: ошибка: «функцияВ пространстве именстанд’Не называет тип
станд :: функция<ResultType ()> е;
   ^
template.h: В конструкторе ‘nghttp2 :: Defer<F, T>:: Defer (F)«:
template.h: 66: 9: ошибка: учебный класс 'nghttp2 :: Defer<F, T>’Не имеет поля с именем‘е»
: f (std :: bind (std :: forward)<F>(f), std :: forward<T>(т) ...)) {}
         ^
template.h: 66: 11: ошибка: «привязывать’Не является членом‘станд»
: f (std :: bind (std :: forward)<F>(f), std :: forward<T>(т) ...)) {}
           ^
template.h: 66: 11: нота: предлагаемая альтернатива:
В файле из /usr/include/netinet/in.h:24:0,
от /usr/include/netdb.h:27,
от util.h: 35,
от util.cc:25:
...

-2

Решение

я забыл какие-либо варианты?

Вы сделали, и компилятор скажет вам, что именно:

ошибка: #error Этот файл требует поддержки компилятора и библиотеки для стандарта ISO C ++ 2011. Эта поддержка в настоящее время экспериментальная, и должен быть включен с помощью параметров компилятора -std = c ++ 11 или -std = gnu ++ 11.


Вы, вероятно, используете действительно старый компилятор (тот, который поставляется с CentOS по умолчанию).

Вам необходимо установить Red Hat Developer Toolset, который предоставляет последние версии, см. https://www.softwarecollections.org/en/scls/rhscl/devtoolset-7/ Больше подробностей:

Developer Toolset предназначен для разработчиков, работающих на платформе CentOS или Red Hat Enterprise Linux. Он предоставляет текущие версии GNU Compiler Collection, GNU Debugger и другие инструменты разработки, отладки и мониторинга производительности.

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]