LINUX.ORG.RU

История изменений

Исправление bugfixer, (текущая версия) :

Тут, кстати, отдельный и открытый вопрос о том, сколько усилий нужно приложить, чтобы написать корректный код, который бы правильно удалял старый экземпляр и создавал бы новый экземпляр в области памяти старого. Особенно с учетом обеспечения exception safety.

Я считаю - без внешней индикации «объект существует» (std::optional в случае отдельных объектов, size vs capacity в vector’е etc) это тупо невозможно.

Так что это, скорее, антипаттерн, который должен применяться в исключительных случаях. В частности, в ситуациях, когда demo – это trivially destructible. В этом случае разницей между количеством конструкторов и деструкторов можно пренебречь.

Согласен по всем пунктам. Более того - знаю места в нашем prod коде где это встречается. Решили не тратить на это время (хотя поправить было несложно) именно по причине «не выстрелит» - всегда имеются гораздо более приоритетные задачи где выхлоп будет реально ощутим (я думаю - у остальных примерно то же самое, в конве choose your fight wisely).

Исправление bugfixer, :

Тут, кстати, отдельный и открытый вопрос о том, сколько усилий нужно приложить, чтобы написать корректный код, который бы правильно удалял старый экземпляр и создавал бы новый экземпляр в области памяти старого. Особенно с учетом обеспечения exception safety.

Я считаю - без внешней индикации «объект существует» (std::optional в случае отдельных объектов, size vs capacity в vector’е etc) это тупо невозможно.

Так что это, скорее, антипаттерн, который должен применяться в исключительных случаях. В частности, в ситуациях, когда demo – это trivially destructible. В этом случае разницей между количеством конструкторов и деструкторов можно пренебречь.

Согласен по всем пунктам. Более того - знаю места в нашем prod коде где это встречается. Решили не тратить на это время (хотя поправить было несложно) именно по причине «не выстрелит» - всегда имеются гораздо более приоритетные задачи где выхлоп будет реально ощутим (я думаю - у остальных примерно тоже самое, в конве choose your fight wisely).

Исходная версия bugfixer, :

Тут, кстати, отдельный и открытый вопрос о том, сколько усилий нужно приложить, чтобы написать корректный код, который бы правильно удалял старый экземпляр и создавал бы новый экземпляр в области памяти старого. Особенно с учетом обеспечения exception safety.

Я считаю - без внешней индикации «объект существует» (std::optional в случае отдельных объектов, size vs capacity в vector’е etc) это тупо невозможно.

Так что это, скорее, антипаттерн, который должен применяться в исключительных случаях. В частности, в ситуациях, когда demo – это trivially destructible. В этом случае разницей между количеством конструкторов и деструкторов можно пренебречь.

Согласен по всем пунктам. Более того - знаю места в нашем prod коде где это встречается. Решили не тратить на это время (хотя поправить было несложно) именно по причине «не выстрелит» - всегда имеются гораздо более приоритетные задачи где выхлоп будет реально ощутим (я думаю - у остальных примерно тоже самое, в конве chose your fight wisely).