Пакет GCC MSYS2 был недавно обновлен до 9.1, но Clang не нравится новый заголовок <variant>
libstdc ++, который входит в него.
При компиляции следующей простой программы:
#include <variant>
int main()
{
std::variant<int, float> x;
}
Я получаю:
# clang++ -std=c++17 foo.cpp
In file included from foo.cpp:1:
Z:\...\msys2\mingw64\include\c++\9.1.0\variant:1559:55: error: '__get' is missing exception specification 'noexcept'
friend constexpr decltype(auto) __detail::__variant::__get(_Vp&& __v);
^
foo.cpp:5:30: note: in instantiation of template class 'std::variant<int, float>' requested here
std::variant<int, float> x;
^
Z:\...\msys2\mingw64\include\c++\9.1.0\variant:263:5: note: previous declaration is here
__get(_Variant&& __v) noexcept
^
1 error generated.
Вот полный заголовок <variant>
, если вы хотите посмотреть на него.
Пока я жду официального исправленияЯ сделал так, как предложил Clang, и добавил noexcept
к заголовку.
Это , похоже, пока работает .
Может ли это решение вызвать проблемы?Должен ли я делать что-то еще?
Бонусные баллы, если вы знаете, это ошибка libstdc ++ или ошибка Clang.