Зачем писать на C++ в 2022 году?

Основы языка C++ были заложены более 40 лет назад, но он по-прежнему повсеместен. В этой статье мы с вами разберемся, где и почему он используется, и порассуждаем, есть ли у него будущее. Разобраться


Пользовательские типы и std::format в C++20

Расскажем, как реализовать пользовательские средства форматирования (форматтеры) в соответствии с новой std::format архитектурой. Читать


Эволюция лямбд в C++14, C++17 и C ++20

Лямбда-выражения — одна из самых популярных фич современного C++. С тех пор, как они были представлены в C++11, лямбды проникли практически в каждую кодовую базу на C++. В этой статье расскажем об основных эволюционных этапах в истории лямбда-выражений, опустив некоторые мелкие детали. Читать


Упрощаем код с помощью if constexpr и концептов C++17/C++20

До C++17 у нас было несколько довольно неэлегантных способов написать static if (if, который работает во время компиляции). Например, мы можем использовать статическую диспетчеризацию или SFINAE. К счастью, ситуация изменилась к лучшему, ведь теперь мы можем воспользоваться для этого if constexpr  и концептами C++20! Подробнее


C++20: корутины cppcoro

Библиотека cppcoro от Льюиса Бейкера (Lewis Baker) дает нам то, чего не дает нам C++20 — библиотеку абстракций корутин C++, основанную на Coroutines TS. Читать далее


C++20: пулы потоков в cppcoro

В этой статье автор покажет пулы потоков (thread pools). Читать


Константные ссылки — не всегда ваши друзья

Я обнаружил, что люди склонны перебарщивать с константными ссылками, считая, что они являются лучшим выбором в любой ситуации и должны использоваться везде, где они могут быть использованы.

Но так ли это? А что насчет альтернатив? И какие подводные камни могут нас поджидать, когда мы используем константные ссылки? Узнать


Шаблоны C++: как итерировать по std::tuple — std::apply и еще пара приемов

В этой статье рассмотрим две техники, первая — с применением std::apply из C++17, вспомогательной функции для кортежей. В этой статье также будут рассмотрены некоторые стратегии, позволяющие сделать итерацию более универсальной и обрабатывать кастомные callable-объекты, а не только выводить их в консоль. Читать