"enable_if_t" не является типом gcc 8.3.1
Технические характеристики системы: Centos 7 с включенным devtoolset-8 (gcc 8.3.1), cmake 3.14.6
Кажется, у меня есть ошибка, связанная с версией gcc, вызывающая «ошибку типа»
Я пытаюсь создать проект gitlab (https://github.com/ColinKennedy/USD-Cookbook/tree/master/plugins/custom_resolver), для которого требуется встроенная версия Pixar USD. Я уже успешно создал USD и выполнил следующие команды, чтобы создать собственный проект преобразователя и предоставить ему расположение USD:
scl enable devtoolset-8 bash
USD_INSTALL_ROOT=/home/fernandos/Documents/USD cmake ..
make install
однако во время установки появляется эта ошибка:
/home/fernandos/Documents/USD/include/pxr/base/tf/hash.h:44:6: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type
std::enable_if_t<std::is_integral<T>::value>
Ошибка этого типа, по-видимому, указывает на ошибку, возможно, вызванную неправильной версией gcc, если я смотрю на другие сообщения о переполнении стека. я знаю это
enable_if_t
был добавлен в С++ 14, поэтому, если у вас есть старый компилятор (например, стандартный gcc 4.8.1 на Centos 7), он выдаст эту ошибку, поскольку он стандартно использует С++ 11 для компиляции. Однако я использую среду devtoolset-8, и все, кажется, указывает на то, что я использую gcc 8.3.1 для компиляции (я даже распечатываю версию MakeFile). Итак, как я могу получить эту ошибку, разве gcc 8.3.1 не знает этого типа?
Я также заметил, что ошибка связана с моей сборкой USD: я не уверен, имеет ли это значение, но я построил ее с помощью gcc 6.3.1 (который, безусловно, знает тип enable_if_t). Поскольку я относительно новичок в создании Linux с помощью cmake/make, может ли это вызвать проблемы?