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

Привет всем. Как можно явно ограничить lifetime для auto storage

переменной? Интересует самый красивый способ (т.к. про четыре некрасивых/неидеоматических я и так уже знаю).

14 ответов

27 просмотров

Блок

Поместить её в отдельный скоуп) Так, например, часто для локгардов делают

LaG1924- Автор вопроса
Georgy Firsov
Поместить её в отдельный скоуп) Так, например, час...

Куча вложенных {} - не очень выразительно. Хотелось бы именно что-то вроде std::fstream::close, но на уровне самого языка.

LaG1924
Куча вложенных {} - не очень выразительно. Хотелос...

Зачастую это сигнализирует о проблеме проектирования, если нужно много вложенных скоупов Зачастую они не нужны

LaG1924- Автор вопроса
Georgy Firsov
Зачастую это сигнализирует о проблеме проектирован...

Я в процессе рефакторинга кода с С. Есть активная работа с файло-подобными ресурсами и имеющийся линейный алгоритм с аналогами функций fopen/fwrite/fclose мне кажется достаточно выразительным, где надо как-то читать/обрабатывать из разных потоков данные. Для удобства и производительности не хочется держать открытыми неиспользуемые дескрипторы для нескольких файлов.

LaG1924
Я в процессе рефакторинга кода с С. Есть активная ...

Вынести работу с файлом в отдельную функцию можно А так, если честно, я очень сомневаюсь, что открытые файловые дескрипторы уж настолько сильно на производительность влияют. Не миллионы же их там

LaG1924- Автор вопроса
Georgy Firsov
Вынести работу с файлом в отдельную функцию можно ...

Да, можно этот код отрефакторить сильнее (отдельные функции и range-based-for сейчас главное инструменты для этого), но я надеялся обойтись "малой кровью" для быстрого переписывания кода. И, на самом деле, файловые дескрипторы - просто пример какого-то ресурса для которого надо четко определять lifetime (и судя по Вашим словам - пример неудачный). Спасибо, я понял, что лучшего способа (вроде mem::drop из раста) нет. И, как я понимаю, сейчас нет пропозалов для подобных "любителей странного".

LaG1924
Да, можно этот код отрефакторить сильнее (отдельны...

template <class T> void drop(T) {}; drop(std::move(value)); // value перейдёт в moved-from state

LaG1924- Автор вопроса
Alexander Karaev
template <class T> void drop(T) {}; drop(std::mov...

О, как. Спасибо, попробую. Впрочем, оно не очень быстро будет работать. Просто вызвать деструктор - было бы быстрее, как мне кажется.

LaG1924
О, как. Спасибо, попробую. Впрочем, оно не очень б...

Ещё альтернатива - положить в optional<T> и сбрасывать в нужный момент (и не использовать после этого)

LaG1924- Автор вопроса
Sergey Skvortsov
Это просто вызов деструктора

move-ctor => dtor нового => dtor moved-out старого, разве нет?

LaG1924
move-ctor => dtor нового => dtor moved-out старого...

Мув-конструктор - по-хорошему очень быстрая операция По крайней мере он по возможности таким должен быть

LaG1924
move-ctor => dtor нового => dtor moved-out старого...

Если это функции без возможности заинлайнить (определение в другом TU и нет LTO), то так, да

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта