Чо напечатает эта программа?
inb4: нахуй пошел
#include <stdio.h>
class A {
bool m_init;
public:
A(){m_init = true; printf ("ctor\n");}
~A(){
printf ("dtor\n");
if (m_init) {
deinit();
}
}
void deinit () {
printf ("deinit!\n");
m_init = false;
}
};
int main() {
A a;
a.~A();
return 0;
}
@mugiseyebrows чо он тебе тама соптимизировал?
@mugiseyebrows схуяли?
@mugiseyebrows да
@mugiseyebrows а что тебе мешает после вызова деструктора пересоздать объект на том же месте? например
new(&a) A;
?@hirthwork тогда второй вызов деструктора будет вполне валиден
@dzhon это не пример. это я так реализую оператор копирования через конструктор копирования у объектов не бросающих эксепшоны в копи-конструкторе и деструкторе
@hirthwork одним из охуительных плюсов является тут то, что можно присваивать объекты имеющие константные поля и поля-ссылки
@dzhon жаваблядь
@mugiseyebrows хуйню бы я творил, если бы применял этот приём для всех объектов без разбора. а с учётом того что я таки проверяю noexcept, то таки я творю будущее