Size: a a a

2020 September 14

P

PRoSToC0der in pro.cxx
но я боюсь это всё может взорвать время компиляции...
источник

N2

N 2 in pro.cxx
Как можно запретить выделять объект на стэке? Если сделать приватный деструктор ругается в наследуемых классах, но если его например не заимплеменить и сделать не публичным то вроде работает, есть метод чище? А не даже это не работает, так я через delete даже удалить не могу
источник

АК

Александр Караев... in pro.cxx
N 2
Как можно запретить выделять объект на стэке? Если сделать приватный деструктор ругается в наследуемых классах, но если его например не заимплеменить и сделать не публичным то вроде работает, есть метод чище? А не даже это не работает, так я через delete даже удалить не могу
Протектед деструктор
источник

P

PRoSToC0der in pro.cxx
N 2
Как можно запретить выделять объект на стэке? Если сделать приватный деструктор ругается в наследуемых классах, но если его например не заимплеменить и сделать не публичным то вроде работает, есть метод чище? А не даже это не работает, так я через delete даже удалить не могу
сделать приватный конструктор и использовать named конструкторы вместо него?
источник

N2

N 2 in pro.cxx
Александр Караев
Протектед деструктор
Не работает
источник

N2

N 2 in pro.cxx
PRoSToC0der
сделать приватный конструктор и использовать named конструкторы вместо него?
Можно но надо много кода переписывать
источник

АК

Александр Караев... in pro.cxx
N 2
Не работает
Что не работает?
источник

N2

N 2 in pro.cxx
Александр Караев
Что не работает?
Ему пофиг он все равно создается на стеке если сделать протектед конструктор
источник

OZ

Olzhas Zhumabek in pro.cxx
N 2
Как можно запретить выделять объект на стэке? Если сделать приватный деструктор ругается в наследуемых классах, но если его например не заимплеменить и сделать не публичным то вроде работает, есть метод чище? А не даже это не работает, так я через delete даже удалить не могу
какой то mixin который делает static_assert(std::is_same_v<T, std::remove_cvref_t(this)>);
источник

OZ

Olzhas Zhumabek in pro.cxx
потом наследоваться от него
источник

AT

Anatoly Tomilov in pro.cxx
В проекте не используются исключения. С или без -fno-exceptions (try catch нет нигде). Нормально ли использовать std::map<int, int> m; ...; f(m.at(123)); вместо std::map<int, int> m; ...; assert(m.find(123) != m.end()); f(m[123]);?
источник

АК

Александр Караев... in pro.cxx
N 2
Ему пофиг он все равно создается на стеке если сделать протектед конструктор
Не конструктор, с деструктор
источник

OZ

Olzhas Zhumabek in pro.cxx
зависит от имплементации стандартной библиотеки, но кажется сразу std::terminate будет
источник

АК

Александр Караев... in pro.cxx
Olzhas Zhumabek
какой то mixin который делает static_assert(std::is_same_v<T, std::remove_cvref_t(this)>);
Сомнительная затея, изнутри класса невозможно узнать, где находится объект (во время компиляции)
источник

N2

N 2 in pro.cxx
Александр Караев
Не конструктор, с деструктор
оговорился, дестрруктор
источник

OZ

Olzhas Zhumabek in pro.cxx
Александр Караев
Сомнительная затея, изнутри класса невозможно узнать, где находится объект (во время компиляции)
перегрузить операторы нью и прочее, потом через приватный деструктор (это просто идея, может довольно не правильная)
источник

АК

Александр Караев... in pro.cxx
Olzhas Zhumabek
перегрузить операторы нью и прочее, потом через приватный деструктор (это просто идея, может довольно не правильная)
Автор вопроса @gnom6584 , так что лучше ему адресовать
источник

OZ

Olzhas Zhumabek in pro.cxx
Olzhas Zhumabek
зависит от имплементации стандартной библиотеки, но кажется сразу std::terminate будет
извиняюсь, зависит от того к чему линкаешься. Но таблицы для перехвата не будет, так что эксепшн просто пролетит до самого конца
источник

CD

Constantine Drozdov in pro.cxx
N 2
Как можно запретить выделять объект на стэке? Если сделать приватный деструктор ругается в наследуемых классах, но если его например не заимплеменить и сделать не публичным то вроде работает, есть метод чище? А не даже это не работает, так я через delete даже удалить не могу
От потомка это не защитишь по очевидным соображениям
источник

N2

N 2 in pro.cxx
кароче слишком сложно, легче просто где-то написать комментарий //НЕ СОЗДАВАТЬ НА СТЕКЕ
источник