Прав ли GCC, когда он принимает шаблон класса, имеющий член с неправильным инициализатором члена по умолчанию?C++

Программы на C++. Форум разработчиков
Anonymous
Прав ли GCC, когда он принимает шаблон класса, имеющий член с неправильным инициализатором члена по умолчанию?

Сообщение Anonymous »

GCC 15.2 (и многие более ранние версии) принимает следующий код, а Clang 21.1 (и многие более старые версии) — нет:

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

struct Wrapper
{
explicit Wrapper(int) {}
};

template 
struct Test
{
Test() : w(0) {}

Wrapper w{};
};

Test t;
См. демонстрацию Godbolt.
Как только я удаляю параметр шаблона, GCC отказывается компилировать (закомментируйте строку 6 (

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

template 
), чтобы увидеть это).
Кто прав? Если GCC прав, почему это происходит?

Подробнее здесь: https://stackoverflow.com/questions/798 ... rong-defau

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