Size: a a a

2020 July 05

ПК

Побитый Кирпич... in pro.cxx
Надо ещё шоб можно было свои аттрибуты херачить с произвольной constexpr инфой. В сочетании с рефлексией это будет очень мощно
источник

S

Stas in pro.cxx
Это репорт?
источник

P

Pepe 🐸 in pro.cxx
Допустим есть какая то своя имплементация MyVector<T> и допустим есть T& operator[](size_t idx). Если T не trivially destructible, но RAII класс, что происходит с элементом в векторе если перезапишу что-то туда с помощью operator[]()? В стандарте написано что не гарантируется что деструтор T вызовется
источник

D

Dmitriy in pro.cxx
Pepe 🐸
Допустим есть какая то своя имплементация MyVector<T> и допустим есть T& operator[](size_t idx). Если T не trivially destructible, но RAII класс, что происходит с элементом в векторе если перезапишу что-то туда с помощью operator[]()? В стандарте написано что не гарантируется что деструтор T вызовется
Так ты при записи, скорее всего, вызовешь operator=() объекта
источник

P

Pepe 🐸 in pro.cxx
Dmitriy
Так ты при записи, скорее всего, вызовешь operator=() объекта
да кстати так и есть) переделываю с placement new на direct initialization
источник

P

Pepe 🐸 in pro.cxx
Но если бы был placement new то утечка?
источник

S

Serg in pro.cxx
placement new нельзя применять к памяти занятой объектом,только к uninitialized
источник

P

Pepe 🐸 in pro.cxx
Serg
placement new нельзя применять к памяти занятой объектом,только к uninitialized
даже если trivially destructible?
источник

P

Pepe 🐸 in pro.cxx
я просто читаю про storage reuse
источник

S

Serg in pro.cxx
Pepe 🐸
даже если trivially destructible?
а какой смысл? в этом случае не даст экономии
источник

P

Pepe 🐸 in pro.cxx
Serg
а какой смысл? в этом случае не даст экономии
я просто чужой код редактирую, хочу понять есть ли там проблема и нет ли у меня проблем. Я как раз убираю плейсмент new
источник

S

Serg in pro.cxx
при написании  своего Vector  без placement new не обойтись,  просто вызывать перед ним деструктор, если известно что там объект
источник

VS

Vlad Serebrennikov in pro.cxx
Pepe 🐸
Допустим есть какая то своя имплементация MyVector<T> и допустим есть T& operator[](size_t idx). Если T не trivially destructible, но RAII класс, что происходит с элементом в векторе если перезапишу что-то туда с помощью operator[]()? В стандарте написано что не гарантируется что деструтор T вызовется
можете дать ссылку на стандарт? а то сам не нахожу
источник

S

Serg in pro.cxx
о чем именно?  operator[] не перезаписывает
источник

P

Pepe 🐸 in pro.cxx
секунду, сейчас запощу код как память инициализуется, где плейсмент нью и ссылку
источник

P

Pepe 🐸 in pro.cxx
Serg
при написании  своего Vector  без placement new не обойтись,  просто вызывать перед ним деструктор, если известно что там объект
источник

P

Pepe 🐸 in pro.cxx
вот верхний блок выхывается при создании, а затем емплейс так записывает
источник

P

Pepe 🐸 in pro.cxx
Vlad Serebrennikov
можете дать ссылку на стандарт? а то сам не нахожу
https://stackoverflow.com/questions/25697706/concept-of-memory-reusing-in-c

там верхний ответ вроде циттирует стандарт
источник

S

Serg in pro.cxx
а в чем проблема?
arr_[k] = T(std::forward<Ts>(args)...);   вызовет operator=()  который при необъодимости очистит предыдущее состояние
источник

P

Pepe 🐸 in pro.cxx
Serg
а в чем проблема?
arr_[k] = T(std::forward<Ts>(args)...);   вызовет operator=()  который при необъодимости очистит предыдущее состояние
черт. извиняюсь это уже мой код, сейчас другую ссылку пришлю
источник