Size: a a a

2020 July 09

VS

Vlad Serebrennikov in pro.cxx
Андрей Руссков
получается что я сам решаю что есть "valid state" для моего T
при этом стандарт всячески защищает твой объект от посягательств извне, объявляя это UB

таким образом внутреннее состояние твоего объекта зависит только от тебя
источник

ДЛ

Дмитрий ⬡ Лапшин... in pro.cxx
А если объект по жизни не destructible?
источник

АР

Андрей Руссков... in pro.cxx
Дмитрий ⬡ Лапшин
А если объект по жизни не destructible?
тогда программа некорректна )
источник

VS

Vlad Serebrennikov in pro.cxx
Андрей Руссков
тогда программа некорректна )
нет, это будет вполне well-formed программа
источник

АР

Андрей Руссков... in pro.cxx
у всех объектов либо рано или поздно вызывается деструктор, либо программа завершается аварийно, либо объекты утекают
источник

VS

Vlad Serebrennikov in pro.cxx
но держать такой объект «на стеке» (упрощение) не выйдет
источник

VS

Vlad Serebrennikov in pro.cxx
Андрей Руссков
у всех объектов либо рано или поздно вызывается деструктор, либо программа завершается аварийно, либо объекты утекают
объекты с dynamic storage duration нужно удалять руками
источник

VS

Vlad Serebrennikov in pro.cxx
пара операторов new delete вам должна быть знакома
источник

АР

Андрей Руссков... in pro.cxx
если деструктор ведет к UB то delete тоже приведет к UB
источник

VS

Vlad Serebrennikov in pro.cxx
delete не скомпилируется просто
источник

VS

Vlad Serebrennikov in pro.cxx
если у объекта ~T() = delete;
источник

VS

Vlad Serebrennikov in pro.cxx
по той же причине, по которой не получится «создать его на стеке»
источник

VS

Vlad Serebrennikov in pro.cxx
а утекающая память это ровно то, что следует ожидать от таких объектов
источник

VS

Vlad Serebrennikov in pro.cxx
тем не менее, их существование вполне допускается
источник

VS

Vlad Serebrennikov in pro.cxx
кто-нибудь знает определение (in)valid reference или to invalidate a reference и набор допустимых операций над такой ссылкой?

итераторы, указатели и ссылки это типичная троица, когда речь заходит об инвалидации, но я смог найти лишь про итераторы и указатели
http://eel.is/c++draft/iterators#iterator.requirements.general-15
http://eel.is/c++draft/basic.stc#4 (хотя сноска в стандарта гласит, что можно брать определение невалидного итератора)
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Набор допустимых операций пустой. Ссылкк инвалидируется при (возможно после) вызове дтора ссылаемого объекта
источник

VS

Vlad Serebrennikov in pro.cxx
Artöm Bakri Al-Sarmini
Набор допустимых операций пустой. Ссылкк инвалидируется при (возможно после) вызове дтора ссылаемого объекта
ссылки на стандарт?
источник

VS

Vlad Serebrennikov in pro.cxx
не то чтобы я не согласен, но этот вопрос меня интересует в разрезе стандарта
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Vlad Serebrennikov
ссылки на стандарт?
Не нашел
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
В разделе про ссылки нет инвалидации
источник