«Для этой библиотеки теперь требуется компилятор C 11 или более поздней версии…» при компиляции «number_base.hpp» библиотеки boost

#c #c 11 #boost

Вопрос:

У меня есть проект на c , использующий библиотеку boost 1.77.0. Компилятор-g 4.8.5, и, как я знаю, он поддерживает стандарт c 11. Для компиляции проекта используется следующая команда:

 g   -std=c  11 main.cpp Logger.cpp MOCMesh.cpp Mesh.cpp CFDMesh.cpp Solver.cpp -o main -I../tools -I/usr/code/include -I. -L/usr/code/lib -lgmp -lphtread -lmpfr
 

Тем не менее, я получил ошибки, которые сказали, что стандарт c не удовлетворен:

 /usr/code/include/boost/multiprecision/detail/number_base.hpp:36:2: error: #error "This library now requires a C  11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_HDR_TYPE_TRAITS being set"
 #error "This library now requires a C  11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_HDR_TYPE_TRAITS being set"
...
 

По некоторым причинам я не могу обновить компиляторы GNU до последней или более поздней версии, так что кто-нибудь знает, как решить эту проблему?

Комментарии:

1. IIRC, GCC 4.9 была первой версией с полной поддержкой C 11. Можно ли использовать более старую версию библиотеки boost, для которой не требуется C 11?

2. Даже 4.9 — это древность . Если вы можете, вам действительно следует обновить GCC. Сейчас он обновлен до версии 11, над версией 12 ведется работа.

3. почему вы не можете перейти на еще более высокую версию?

4. GCC 4.8.0 был выпущен в марте 2013 года, а точечный выпуск GCC 4.8.5 был выпущен в июне 2015 года. Версии повышения этого таймфрейма составляют от 1.54 до 1.57. Не так уж и удивительно, если 1.77 эволюционировала после того, что поддерживает GCC 4.8.5.

Ответ №1:

Используйте более старую версию boost с этого периода времени