Clang сломан с `-std = c ++ 20` и `-wdtor-name`C++

Программы на C++. Форум разработчиков
Anonymous
Clang сломан с `-std = c ++ 20` и `-wdtor-name`

Сообщение Anonymous »

Рассмотрим этот простой код. < /p>

Код: Выделить всё

struct Foo {
template 
struct Bar {
~Bar();
};
};
< /code>
с реализацией вне линии < /p>
template 
Foo::Bar::~Bar()
{
// dtor implementation
}
Использование Clang (до текущего сундука), с -std = c ++ 20 и -wdtor-name . Предупреждение: Предупреждение: ISO C ++ требует имени после ':: ~' для найденного в той же сфере, что и название раньше. class = "lang-cpp prettyprint-override">

Код: Выделить всё

template 
Foo::Bar::~Bar()
{
// dtor implementation
}
< /code>
Но, CWG 2237 делает это недействительным (по крайней мере, в простом классе). Может быть, он не предназначен для распространения в вложенном шаблоне класса, или, может быть, у Clang есть ошибка? -Werror 
(что я делаю), эти предупреждения являются ошибками.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... wdtor-name

Вернуться в «C++»