Компиляция fmt с Intel C в Windows 32

#fmt

Вопрос:

Мы компилируем fmt с помощью компилятора Intel C в 32-разрядных и 64-разрядных версиях Windows. На 32 бит мы получаем странную ошибку. Может быть, мы делаем что-то не так, но вопрос в чем? Вот сообщение об ошибке:

 ../master/extern/fmt/8.0.1/include/fmt/format-inl.h(1126): error: expression must have a constant value
      static constexpr const uint128_wrapper pow10_significands[] = {
                                                                    ^

 

Есть какие-нибудь предложения по исправлению? Потенциально мы могли бы создавать с помощью MSVC.

Обновление: формат-inl.h (=встроенный формат) предполагается использовать только в режиме только заголовка, насколько я понимаю, и это не то, что я хочу, и оно не включено. Поэтому я должен понять, почему это происходит.

PS: fmt-это здорово.

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

1. Добавьте полный минимальный пример, который не удалось скомпилировать.

2. Необходимо, чтобы вы показали часть кода, на которую повлияла ошибка, само по себе сообщение об ошибке бесполезно, если вы не знаете причину.

Ответ №1:

Рассматриваемое выражение является постоянным, поэтому это выглядит как ошибка в компиляторе или, возможно, неполная реализация constexpr . Сообщение об ошибке вводит в заблуждение, но вы можете решить проблему, удалив constexpr или каким-либо другим способом.

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

1. Согласен, это похоже на ошибку компилятора. Спасибо

2. У Intel C classic есть проблемы. У новейшего компилятора на основе Intel Clang нет проблем. Поэтому я прихожу к выводу, что компилятор ошибочен.

Ответ №2:

Вы пробовали создавать с помощью компилятора C 17? constexpr это не ключевое слово на языке Си afaik.