LINUX.ORG.RU

История изменений

Исправление Aber, (текущая версия) :

Ну так а с gcc 9.4.0 оно либо сразу сегфолтится

Я вообще ничего на с++ не писал кроме одно работы в универе 20 лет назад, я жабокодер, но чисто логикой я не вижу причин для segfalt а поведение clang вполне понятно.
Возможно gcc сегфолт потому что там оптимизация не выкручена на максимум и происходит зануление.

T x{9};

Это же аллокация не в куче а в стеке. Дальше destruct, но по факту в стеке все остается по старому. Вот если бы после x.destruct() ты бы объявил другую структуру, или сделал бы вызов какого-нибудь метода то она бы попортила стек и тогда точно все пошло бы не так.

Разве не?

Исходная версия Aber, :

Ну так а с gcc 9.4.0 оно либо сразу сегфолтится

Я вообще ничего на с++ не писал кроме одно работы в универе 20 лет назад, я жабокодер, но чисто логикой я не вижу причин для segfalt а поведение clang вполне понятно.
Возможно gcc сегфолт потому что там оптимизация не выкручена на максимум и происходит зануление.

T x{9};

Это же аллокация не в куче а в стеке. Дальше destruct, но по факту в стеке все остается по старому. Вот если бы после x.destruct() ты бы обвил другую структуру, или сделал бы вызов какого-нибудь метода то она бы попортила стек и тогда точно все пошло бы не так.

Разве не?