Привет, Хабр! Сегодня я хочу вам представить подборку интересных новостей и материалов по C++ за последнюю неделю.
Приятного чтения!
📝 Статьи
-
Understanding the inner workings of C++ smart pointers — The shared_ptr — вам всегда было интересно, как устроен
std::shared_ptr
(cppreference) изнутри? Статья предлагает разбор минималистичной, но вполне себе полноценной его реализации. -
What’s new in C++26 (part 1) — Обзор свежепринятых в C++26 новинок: переменные-плейсхолдеры (cppreference), форматированные строки в
static_assert
и другое.
// Разве это не прекрасно, что мы можем написать так и на // нас не будет ругаться компилятор? auto [data, _] = get_data(); // И мы можем повторить этот _ в одной области видимости // много раз! auto [ptr, _] = std::to_chars(p, last, 42); // Да, мы не могли использовать std::format в static_assert // до C++26 static_assert(sizeof(int) == 4, std::format("Expected 4, actual {}", sizeof(int)));
-
An Overview of C++26: The Library — Если предыдущая статья обозревает исключительно изменения в самом языке, то в этой статье речь идет об изменениях в стандартной библиотеке:
std::string_view
(cppreference) продолжают делать всё более и более полезным, ranges продолжают допиливать, а количество контейнеров в стандартной библиотеке всё продолжает увеличиваться:
// Динамически-расширяемый вектор с фиксированным // capacity заказывали? std::inplace_vector<int, 2> vec; vec.push_back(1); // OK vec.push_back(2); // OK vec.push_back(3); // std::bad_alloc! Место на стеке закончилось!
-
Structs and constructors — Структуры и конструкторы: нужно ли одно другим, или агрегатной инициализации хватит всем?
-
Reader Q&A: What’s the best way to pass an istream parameter? — Знаток (Герб Саттер, председатель WG21) отвечает на вопрос: как лучше всего принять в функцию
std::istream
(cppreference)? Спойлер:
Скрытый текст
template <typename S> void add_from_stream( S&& s ) requires std::is_convertible_v<S, std::istream const&> { // do work + remember to use s as "std::forward<S>(s)" }
-
Synchronization Primitives in C++20 — Возвращаясь от мечт о прекрасном будущем (C++26) к реальности (C++20, если вам повезло): о
std::latch
(cppreference) иstd::barrier
(cppreference). -
Compressing floating-point numbers quickly by converting them to brain floats — Не хватает памяти на большие объемы
double
-ов? Как насчет того, чтобы сжать их до 16 бит (bfloat16)?
📺 Видео и доклады
-
C++ Weekly — Ep 444 — GCC’s Implicit constexpr — Обзор расширения GCC (GCC docs), делающего все
inline
функции в вашем кодеconstexpr
, если они удовлетворяют всем требованиямconstexpr
-функций.
Дайджест составлен и опубликован при поддержке московского сообщества программистов C++ Moscow
Заметили ошибку или опечатку? Сообщите в личку (Telegram, Habr)
Прислать ссылку можно через форму обратной связи или просто написав мне в личные сообщения (Telegram, Habr)
← Предыдущий выпуск: C++ Дайджест №7
ссылка на оригинал статьи https://habr.com/ru/articles/841742/
Добавить комментарий