Ender
В msvc, почему-то нормально собиралось
Egor
случай хитрый? потому что явный вызов это обычное использование и должно работать
Egor
сам себя?
Ender
Угу
Egor
ну значит тут хитрый, тут возможно
Ender
Дело было в кути, и нужно было закрывать форму, и чё-то делать onclose
Ender
В версии для msvc я деструктор вызывал. А когда абсолютно рабочий код по забывчивости отдал гцц - был немного шокирован. пришлось переписать чуть-чуть
Berkus
в чём выражаются семимильные шаги развития гцц? с++ вкрутили и разрешили деструкторы?
они все еще упороты по гпл, но начали несколько модуляризовать и переписывать компилятор на с++
Berkus
исправили сообщения об ошибках, например
🐙 Antony
Вряд ли. Я о том, что в багтрекере гцц как ишуй явный вызов деструктора висел с 2005го года, и до 2017 включительно он не работал.
В MSVC был баг с явным вызовом виртуального деструктора, так что в этом месте оба компилятора лажали :)
Ender
Гы
Anonymous
вот кстати интересный вопрос - msys2 идет под лицензией GPL, значит ли это, что и все пакеты, включая какой-нибудь mingw-w64-x86_64-sfml попадает под GPL?
Александр
я прошу прощения за скрин, но это исключительно для наглядности. увидел апдейт небезызвестной либы unconstexpr и вот такую магию
Anonymous
лицензия на компилятор не равна лицензии на код который он производит
а это не компилятор, это дистрибьюция компилятора, программ и библиотек
Anonymous
то есть sfml собрал кто-то и сделал в каком-то смысле частью этой дистрибьюции
Berkus
Berkus
проблема с гцц в том что его нельзя нигде использовать - если ты линкуешься хоть с кусочком гцц твой кодец становится гпл
Egor
что код, собранный гцц, автоматически становился гпл
Berkus
нет
Egor
вот гцц и встраивал свой гпл кусок
🦥Alex Fails
Там емнип есть исключение для стдлибы
Berkus
для рантайм библиотек там исключения из гпл прописаны
Anonymous
для библиотек такие исключения не в LGPL?
Berkus
но рантайм библиотеки никого не ебут - на гцц нельзя написать никакой нормальный тулинг, ибо "слинковаться с гцц" невозможно без полной порчи своих сорцов
🐙 Antony
Александр
Жаль что перестанет работать, когда прикроют http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#2118
слышал, что планируют сделать опционально по флагу компилятора, нет?
🐙 Antony
Прикроют лазейку в Стандарте и всё. А уж позволять такое или нет - решать кокретным производителям компиляторов (ill formed в стандарте != не компилировать)
Anonymous
но ведь удалять объект из его же метода - это непонятно
Berkus
но ведь удалять объект из его же метода - это непонятно
нормально, а вот деструктор из деструктора звать так себе идея
Anonymous
Ну вот если ты вызвал деструктор, а потом еще какую-то функцию - она будет выполняться или объект уже всё и не надо?
Alexander "SonnySlave"
Alexander "SonnySlave"
но это снова же UB
Alexander "SonnySlave"
так как после завершения вызова dtor всё остальное по отношению к этому this будет UB
Anonymous
А если вызванный в методе объета деструктор вызывается в наследуемом от этого метода методе и после этого что-то происходит опять-таки непонятно
Anonymous
что такое это UB? Ubisoft?
Alexander "SonnySlave"
что такое это UB? Ubisoft?
с каждым вызовом UB в С++ Ubisoft клепает DLC платное
Alexander "SonnySlave"
с каждым вызовом Implementation-defined - новый лутбокс
Anonymous
Ubuntu? Unity Binary? у меня много вариантов
Berkus
Unified Blockchain на самом деле
Berkus
или Universal всё время путаю
Anonymous
А есть какой-нибудь язык программирования, который подмножество С++ и не надмножество Си, с минимальным количеством разнообразия и языковой гибкости и сахара?
Anton
или Universal всё время путаю
А меня гнобил за не знание UB 😔
Anton
Кто?
Ender
.-.
Ender
Или тебя гнобилИ?
Egor
ни у кого не было, что собранный экзешник на винде детектился, как троян виндовс дефендером? и что в таких случаях можно сделать?
Egor
выключить сраный дефендер
это я пользователям не объясню, надо решать что-то с ним
Anonymous
Почему
я дальше по после того сообщения описал конкретные примеры
Ender
Если у тебя объект создаётся каждый раз при вызове какого-то метода, и во время того, как объект перестал существовать (а нам важен именно этот момент) что-то должно произойти, при этом, нам важно что-то сделать перед выходом ( данные в файл записать, например ), почему бы именно так и не поступить?
Anonymous
можно сделать это в деструкторе, а не в вызывающем его методе
Ender
Лол
Ender
Ну да, можно. Только допустим, что метод - это слот.
Ender
А вызов деструктора - это самый простой сигнал
Ender
Ну это qt
Alexander "SonnySlave"
Ender
Я код потом могу принести, поржать
Ender
Суть в том, что по нажатию на кнопку ты открываешь форму. new и show. Где-то в новой форме ты делаешь в слоте привязанном на кнопку вызов деструктора. Ну и ещё что-то можно поделать. Форма закрывается. В main ты напишешь для для главной формы что-то вроде mainwindow.connect(slot(show), formochka, ondestroyed()) что-то такое
Berkus
ставишь форме флаг Destroy on close в слоте вызываешь close() вроде всё
Ender
Ну я почти так делал, когда для гцц переделывал
Ender
Просто чё выше, это была моя первая идея.
Ender
Ещё давно.
Ender
Когда у меня шпирит отказывался компилироваться на гцц, на мсвц же работал
🦥Alex Fails
ни у кого не было, что собранный экзешник на винде детектился, как троян виндовс дефендером? и что в таких случаях можно сделать?
у Виталия (@xvitaly) было. Он с мс чатился недели две, они потомпризнали ложное срабатывание
Egor
в тп им писать? вирустотал обнаруживает 0 срабатываний