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

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

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

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

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

#WXSSA
Download Telegram
🤠 Что такое std::is_within_lifetime из C++26?

В статье автор разбирает новинку C++26 — std::is_within_lifetime — и объясняет, зачем она вообще появилась в стандарте.

❗️Ключевые моменты статьи:
is_within_lifetime — не union-специфичная функция, а общий механизм запроса времени жизни объекта
• мотивация пришла из задачи реализации OptBool с минимальным расходом памяти
• решение элегантно совмещает compile-time корректность и runtime эффективность

Фокус статьи — на дизайне фичи: почему указатель вместо ссылки, почему consteval-only и почему такое обобщённое имя.

👉 Статья

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

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

#свежак
🤩21👍1😁1
🍙 Комментарии убивают код. Вы согласны?

Роберт Мартин в "Чистом коде" написал жёстко: комментарий — это признак неудачи. Если вам нужно объяснять код словами, значит, вы написали его недостаточно ясно.

В C++ эта идея получила новое дыхание с приходом [[nodiscard]], концептов из C++20 и строгой типизации. Тип std::expected<Result, Error> уже сообщает о возможной ошибке без единого слова.

Но у этой философии есть тёмная сторона. Когда через год вы видите static constexpr int MAGIC = 0x5F3759DF — никакое именование не объяснит, что это константа из алгоритма быстрого обратного квадратного корня Quake III. Здесь нужен комментарий и, желательно, ссылка на статью.

Самодокументирующийся код работает для структуры. Комментарии работают для контекста и истории.

✏️ Вы придерживаетесь правила "код без комментариев" или считаете это крайностью?

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

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

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
5😁2
📌 Хранение float в std::map: правильный способ

std::map требует strict weak ordering. float нарушает его при наличии NaN. std::strong_order спасает.

#include <compare>
#include <map>
#include <iostream>

struct FloatCompare {
bool operator()(double a, double b) const {
// strong_order — total order, строго соответствует требованиям map
return std::strong_order(a, b) == std::strong_ordering::less;
}
};

int main() {
std::map<double, std::string, FloatCompare> m;

m[1.0] = "one";
m[-0.0] = "negative zero";
m[+0.0] = "positive zero"; // отдельный ключ! (strong_order различает)
m[std::numeric_limits<double>::quiet_NaN()] = "nan";
m[std::numeric_limits<double>::infinity()] = "inf";

// Все 5 ключей уникальны и упорядочены детерминированно
std::cout << m.size(); // 5
}


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

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

#константная_правильность
👍13
📄 Для тех, кто остался на Windows

Winslop — утилита с одной задачей: убрать из Windows 11 всё лишнее.

Никакого Copilot в трее, никакой телеметрии, никаких виджетов и рекламы в меню Пуск. Только то, что вы сами разрешили оставить.

• показывает, что именно будет изменено
• ничего не запускает автоматически
• всё обратимо
• никакого облака — всё локально

👉 Чистим винду

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

🐸 Библиотека Go-разработчика

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2
🛠 Clang 22.1.0: что сломали, что починили и зачем обновляться

Вышел Clang 22.1.0 — и там не только фиксы, но и несколько изменений, которые могут сломать существующие сборки.

⚡️ Reduced BMI по умолчанию (C++20 modules): режим Reduced Binary Module Interface теперь включён по умолчанию. Если ваша билд-система не поддерживает двухфазную компиляцию с Reduced BMI — ждите регрессий.

⚡️ ABI-изменение для MSVC: scalar deleting destructor: Clang 22 теперь корректно вызывает scalar deleting destructor вместо complete object destructor + global delete. Если у вас смешаны бинарники, собранные Clang 21 и Clang 22, — возможна порча памяти. Откат через -fclang-abi-compat=21.

⚡️ -Wincompatible-pointer-types стал ошибкой: раньше это было предупреждение, теперь — ошибка по умолчанию. Понижается обратно через -Wno-error=incompatible-pointer-types.

⚡️ __builtin_dedup_pack: новый builtin для дедупликации типов в parameter pack. Удобно при нормализации type lists в метапрограммировании — TypeList<__builtin_dedup_pack<int, double, int, char>...> вернёт TypeList<int, double, char>.

⚡️ UBSan trap-reasons в debug info: трапы UBSan теперь пишут причину прямо в DWARF — LLDB сможет показать «signed integer addition overflow in 'a + b'» вместо немого падения. Отключается через -fno-sanitize-debug-trap-reasons.

⚡️ Thread Safety Analysis вышел из беты: ACQUIRED_BEFORE и ACQUIRED_AFTER больше не требуют -Wthread-safety-beta.


🔗 Читать Release Notes

✏️ А вы уже обожглись на ABI-изменениях между версиями Clang?

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

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

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3🥱1
Weekend Offer Multitrack: быстрый найм для опытных специалистов

Приглашаем бэкенд-разработчиков с опытом от 5 лет на C++, Python, Go или Java/Kotlin получить офер за 2 дня и поработать в трёх командах Яндекса на выбор.

Приходите, если вам важно видеть результат своей работы в живых системах и метриках, а не только в merged PR.

Как всё проходит:

🟢 До 6 марта — регистрация на сайте.
🟢 14 марта — технические секции.
🟢 15 марта — финальная секция и офер.

После получения офера у вас будет возможность выбрать три команды и в течение нескольких недель поочерёдно поработать в каждой. Такой формат позволит не только познакомиться с коллегами и технологическим стеком, но и оценить задачи и рабочие процессы в каждой команде.

Подробности и форма регистрации — по ссылке.
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2
😎 Топ-вакансий для C++ разработчиков за неделю

Developer C++ (macOS) — Удалёнка

Разработчик C++ / Senior Security Engineer — от 400 000 ₽ Удалёнка

Senior C Developer — от 350 000 ₽ Удалёнка

✍️ Еще больше топовых вакансий — в нашем канале C++ jobs

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

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

#буст
👍2😁1
За год мы провели три потока курса по ИИ-агентам, а теперь запускаем масштабное обновление!

В новом, четвёртом потоке мы учли все пожелания студентов, добавили большой блок про AgentOps и сместили фокус с базовых концепций на суровый инжиниринг. Собрать простую цепочку вызовов легко, а вот выжать перфоманс, заставить всё работать локально и без утечек бюджета в проде — задача со звёздочкой.

В программе:

— изоляция выполнения агентов и интеграции по стандарту MCP;
— профессиональная оркестрация и механизмы time-travel;
— продвинутый RAG для промышленной эксплуатации;
— контроль экономики: оптимизация вычислительных ресурсов и токенов;
— развёртывание локальных опенсорс-моделей в закрытых контурах (152-ФЗ).

В честь старта продаж действует спецпредложение: 3 курса по цене 1 (два дополнительных курса в подарок).

Доступ к материалам для предварительной подготовки откроется сразу после оплаты.

По промокоду Agent забирайте скидку 10 000 ₽ (89 000 ₽ вместо 99 000 ₽). Успейте занять место до 28 февраля!

👉 Присоединиться к четвёртому потоку и вывести агентов в прод
😁2
🎯 std::move_only_function: зачем нам ещё один тип функций?

std::function — хороший инструмент. Но есть одна проблема: он требует копируемости. А что, если твой callable некопируемый? В C++23 есть решение — std::move_only_function.

Представь: ты хочешь передать лямбду, которая захватывает std::unique_ptr. С std::function — UB или не скомпилируется. С std::move_only_function — просто работает.

// C++23
#include <functional>
#include <memory>

auto make_task(std::unique_ptr<int> data) {
// Работает! std::function здесь не справится
return std::move_only_function<void()>{
[d = std::move(data)]() {
std::println("Value: {}", *d);
}
};
}


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

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

#константная_правильность
👍61👾1
🐸 Подборка вакансий для C++-разработчиков за неделю

Разработчик C++ / Senior Security Engineer — от 400 000 ₽ Удалёнка

Developer C++ (macOS) — Удалёнка

Senior C Developer — от 350 000 ₽ Удалёнка

Senior C++ Developer — от 280 000 ₽ Офис/гибрид (Москва, Краснодар, Нижний Новгород, Новосибирск)

C++ разработчик/CV-инженер — Удалёнка

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

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

#вакансии
😁1
Последний шанс: 3 курса по цене 1 и запуск AI-агентов в продакшн

Оптимизировать память в C++ — искусство, а заставить автономных ИИ-агентов работать без утечек бюджета — вызов нового уровня. Как контролировать поведение мультиагентных систем и управлять ресурсами?

В обновлённой программе фокус смещён на жёсткий инжиниринг и вывод LLM-решений в прод. Вы изучите механизмы ReAct-циклов, работу с LangGraph и AutoGen, архитектуру продвинутого RAG, протоколы MCP и AgentOps. Все ключевые навыки в одном месте: контроль затрат, time-travel дебаггинг, системная маршрутизация, human-in-the-loop и интеграция с высоконагруженными бэкендами.

Почему нельзя откладывать:

— масштабная акция «3 курса по цене 1» сгорит уже завтра;
— промокод Agent на скидку 10 000 рублей действует последние часы;
— сразу после оформления открываются материалы для подготовки — начать учиться можно прямо сейчас.

Забронировать место на курсе и забрать бонусы до 28 февраля