170 похожих чатов

Можно ли надеяться, что код вида void purge_some_fields(X& x) {

const auto f1{move(x.f1)};
const auto f2{move(x.f2) };
}
с оптимизациями превратится в вызов деструкторов in-place?
Или как можно его улучшить?
Гарантируется, что X умрёт в скоупе, в котором эта функция вызывается

14 ответов

5 просмотров

Деструкторы f1 f2 очевидно вызовутся и поля в них мувнутся предварительно. А что ещё можно ожидать?

Dmitriy-[Отпуск] Автор вопроса
Boris Usievich
Деструкторы f1 f2 очевидно вызовутся и поля в них ...

Да... И я в раздумьях, можно ли переписать этот костыль лучше

Dmitriy-[Отпуск] Автор вопроса
Anatoly Shirokov
А в чем костыль? Ну мувнул состояние и что?

Фактически - это аналог .reset() для нескольких полей. Нужен для разрыва цепочки зависимостей: x.f через некие системные вызовы держит CoW-ссылку на X

Dmitriy-[Отпуск] Автор вопроса
Boris Usievich
А цель?

Мысли в слух. Не perf-critical

Нет не гарантируется, Мне не нравится, что x передается в функцию по ссылке, лучше через указатель

Dmitriy [Отпуск]
Чем лучше, кроме ggl-code-style?)

Такая передача явно показывает, что объект в функции меняется, таким образом повышаем читабельность кода

а по ссылке - не показывает?

Если хочешь иметь гарантии, принимай unique_ptr

Ilya Zviagin
а по ссылке - не показывает?

Обычно ссылки константные в функции, тем самым создаётся некоторая путаница для читающего)

Till Schneider
Если хочешь иметь гарантии, принимай unique_ptr

Эээ, ему надо ресетнуть часть объекта

Boris Usievich
Эээ, ему надо ресетнуть часть объекта

А, он в Вопросе написал, что хочет уничтожить X, а не часть из X

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
49
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
@HemulGM Параметры у AddStream поменялись? Несостыковка какая-то
Катерина Свиридова
12
Подскажите, есть какие-то события создания/уничтожения у TFrame по типу TForm (OnCreate и OnClose/OnDestroy) ? Как отловить создание TFrame и "перед" уничтожением. На Tframe р...
Денис
8
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
а чем хуже?
Alexey Kulakov
10
Карта сайта