Библиотека C/C++ разработчика | cpp, boost, qt
33.9K subscribers
2.17K photos
67 videos
16 files
4.51K links
Все самое полезное для плюсовика и сишника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d6cd2932

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17

#WXSSA
Download Telegram
⚡️ Последний шанс забрать курсы со СКИДКОЙ 40%! Прокачайте свой мозг правильно

До конца акции вы можете воспользоваться специальными ценами на самые востребованные IT-направления. Круто и выгодно прокачать свои скиллы, чтобы получить оффер, уехать на Бали и больше не быть онлайн 😎

➡️ Разработка AI-агентов от 49 000 ₽ (вместо 69 000 ₽)
Курс про контролируемую разработку ИИ-агентов: качество, стоимость, наблюдаемость и тестирование. С первого занятия — только практическая работа.

➡️ Курс AgentOps 129 000 ₽ (вместо 149 000 ₽)
Профессиональный трек для разработчиков и LLM инженеров о том, как правильно внедрять AI-логику в бэкенд и сохранять железную стабильность сервиса.

➡️ Математика для Data Science от 29 990 ₽ (вместо 39 990 ₽)
Вы научитесь решать сложные математические задачи, которые дают на собеседованиях на позицию дата-сайентиста в бигтехе. Отличная база для мощного старта в DS.

➡️ Курс Специалист по ИИ 89 000 ₽ (вместо 113 900 ₽)
Комплексная программа для получения профессии в сфере ИИ с нуля. За 8 месяцев вы соберете сильное портфолио из 5 реальных проектов и дипломной работы.

➡️ Архитектуры и шаблоны проектирования27 990 ₽ (вместо 37 900 ₽)
Интенсив для разработчиков, который поможет освоить основные паттерны проектирования и прокачать навыки архитектора программного обеспечения.

🌸 Выбирайте направление, оставляйте заявку на сайте распродажи, и наш менеджер подробно вас проконсультирует
Please open Telegram to view this post
VIEW IN TELEGRAM
1
📰 Свеженькое из мира C++

Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.

😎 Интересное:

Как уволиться грамотно: 8 шагов, чтобы закрыть все вопросы — разбираемся как подготовиться к увольнению
constexpr аллокации в C++20: new при компиляции — разбираемся почему теперь можно аллоцировать память во время компиляции
Бесплатная база по C++ с тонной практики — бесплатный курс по C++
8 признаков, что тебя готовят к увольнению — будь осторожен, эти признаки тебе намекнут на то, что тебе нужно вспоминать свой пароль от HH

📙 Ranges:

Алгоритмы диапазонов: Алгоритмы поиска
Алгоритмы диапазонов: Алгоритмы сортировки

🔹📍Навигация: ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#свежак
😁3
🍪 Как выдать shared_ptr на себя из метода?

std::shared_ptr
хранит рядом с объектом control block — счётчик владельцев. Несколько shared_ptr безопасны, пока делят один control block. Проблема: иногда объекту нужно отдать shared_ptr на себя, но внутри метода есть только сырой this, который о counter'е ничего не знает.


Наивный способ:

struct S {
std::shared_ptr<S> self() { return std::shared_ptr<S>(this); }
};
auto p = std::make_shared<S>();
auto q = p->self();


У p и q свои control block'и, у каждого счётчик = 1 → объект удалится дважды (UB).


Решение — enable_shared_from_this:

struct S : std::enable_shared_from_this<S> {
std::shared_ptr<S> self() { return shared_from_this(); }
};
auto p = std::make_shared<S>();
auto q = p->self();


База добавляет скрытый weak_ptr<S>. При первом заворачивании в shared_ptr его конструктор замечает эту базу и кладёт туда свой control block. Теперь q разделяет счётчик с p.


🍴 Что делает shared_from_this():

shared_ptr<S> shared_from_this() { return shared_ptr<S>(weak_this); }


Это конструктор из weak_ptr, а не lock(): без владельца он бросает bad_weak_ptr, а не молча возвращает пустой указатель.


🍙 Когда скрытый weak_ptr пуст:

S s;                            // на стеке — никто не владеет
s.shared_from_this(); // 💥 bad_weak_ptr (до C++17 — UB)

struct T : std::enable_shared_from_this<T> {
T() { shared_from_this(); } // 💥 хук срабатывает после конструктора
};


Правила: наследовать публично, владеть через shared_ptr (лучше make_shared). Нужна проверка без исключения — в C++17 есть weak_from_this():


🍉 Правила:

• Наследуйте enable_shared_from_this публично.
• Владейте объектом через shared_ptr — лучше make_shared (одна аллокация + exception-safety).
• Не вызывайте shared_from_this() в конструкторе и на объектах со стека — будет bad_weak_ptr.
• Нужна проверка без исключения — в C++17 берите weak_from_this():
if (auto sp = obj.weak_from_this().lock()) { /* владелец есть */ }



📍Навигация: ВакансииЗадачиСобесыКанал в Max

Библиотека C/C++ разработчика

#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰4🔥21👍1