Синтаксис си/с++ 22

Синтаксис си/с++

Концепты и ограничения шаблонов (C++20 concepts)

Введение Статья 541 показала static_assert как раннюю технику ограничения допустимых типов шаблона — C++20 представил concepts, значительно более выразительный, явный и интегрированный в систему типов механизм для той…

Синтаксис си/с++

Структурированные привязки и другие удобства C++17/20

Введение В завершение блока про шаблоны и современный C++ разберём ряд практичных синтаксических удобств, появившихся в C++17/20, делающих повседневный код заметно компактнее и выразительнее: структурированные привязки, if/switch с…

Синтаксис си/с++

Правило пяти/нуля (Rule of Five/Zero)

Введение Статьи 532 (конструкторы/деструкторы) и 546 (move-семантика) разбирали отдельные специальные методы класса — правило пяти систематизирует, какие именно специальные методы нужно рассматривать совместно при проектировании класса, управляющего ресурсом…

Синтаксис си/с++

Неопределённое поведение (undefined behavior): типичные примеры и почему это важно

Введение Термин «неопределённое поведение» неоднократно встречался в этом цикле (выход за границы массива статья 518/519, переполнение знакового типа статья 512, разыменование нулевого указателя статья 519) — в этой…

Синтаксис си/с++

Касты типов: static_cast, dynamic_cast, const_cast, reinterpret_cast

Введение Предыдущие статьи цикла неоднократно использовали static_cast без подробного объяснения, и кратко упоминали const_cast (статья 530) — в этой статье систематизируем все четыре основных современных оператора приведения типов…

Синтаксис си/с++

Атрибуты C++: [[nodiscard]], [[maybe_unused]] и другие

Введение Современный C++ (начиная с C++11, с расширениями в последующих стандартах) предоставляет унифицированный синтаксис атрибутов ([[имя_атрибута]]), дающих компилятору дополнительные подсказки о намерениях разработчика — в этой статье разберём…

Синтаксис си/с++

Стандартная библиотека: обзор контейнеров, алгоритмов, итераторов

Введение Цикл неоднократно использовал отдельные элементы стандартной библиотеки (std::vector статья 518/542, std::map статья 458/523, std::sort статья 461 алгоритмического цикла) — в этой статье дадим систематический, обзорный взгляд на…