Прав ли 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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