Комитет ISO по стандартизации завершил работу над финальной редакцией спецификации международного стандарта C++26. Многие нововведения, описанные в документе, уже получили экспериментальную поддержку в популярных компиляторах, таких как GCC, Clang и Microsoft Visual C++, а стандартные библиотеки, соответствующие новым правилам, активно развиваются в рамках проекта Boost.
В течение следующих двух месяцев спецификация будет проходить стадию предпубликационной подготовки: редакторы устранят опечатки и стилистические неточности. В начале ноября финальный вариант документа будет направлен в ISO для официального выпуска под индексом ISO/IEC 14882:2026.
Ключевые особенности C++26
Контрактное программирование (Contracts)
В язык внедрены формальные спецификации интерфейсов через три оператора: pre (предусловие), post (постусловие) и contract_assert (проверка утверждений). Предусловия проверяют корректность входных данных до вызова функции, постусловия фиксируют требования к результату, а contract_assert отвечает за обработку исключительных ситуаций. Ожидается появление в GCC 16.
Рефлексия (Reflection)
Новый механизм позволяет инспектировать и модифицировать структуру программы на этапе компиляции. Введены операторы ^^ для получения метаинформации и [: ... :] для обратного преобразования. Для обработки метаданных предложена библиотека std::meta. Поддержка функции также запланирована для GCC 16.
Циклы template for
Оператор template for предназначен для итерации по метаобъектам (например, пакетам параметров или результатам рефлексии) прямо во время компиляции. Каждая итерация раскрывается в отдельной области видимости, где переменная цикла является константой.
Асинхронность и параллелизм
Фреймворк std::execution стандартизирует асинхронное выполнение задач. Он опирается на три сущности: scheduler (планировщик потоков, GPU или событий), sender (описывает задачу) и receiver (обработчик результата).
Библиотека std::simd
Добавлена поддержка распараллеливания операций с использованием инструкций SIMD (AVX-512, NEON) через стандартную систему типов C++, что упрощает написание высокопроизводительного кода.
Новые контейнеры и возможности
std::inplace_vector: вектор переменного размера, размещаемый в стеке, что позволяет избежать аллокаций в «куче».std::hive: структура для неупорядоченного хранения данных, оптимизированная для интенсивных вставок и удалений без необходимости сдвига элементов.std::linalg: полноценный API для линейной алгебры на базе стандартов BLAS.#embed: директива для удобного встраивания бинарных ресурсов (например, картинок или прошивок) напрямую в код.
Синхронизация и безопасность
Введены механизмы Hazard pointer и RCU (Read-Copy Update) для безопасной работы с памятью в многопоточных средах без использования тяжелых блокировок. Также усилена безопасность стандартной библиотеки — добавлены проверки выхода за границы буферов для критических операций.
Прочие улучшения языка
- Расширена поддержка
constexpr: теперь можно использоватьplacement new, структурированные привязки и генерацию исключений на этапе компиляции. - Добавлена «тривиальная перемещаемость» (Trivial Relocatability) для оптимизации перемещения объектов в памяти.
- Улучшен синтаксис структурированных привязок с использованием
...для захвата остатка элементов. - Разрешено использование переменных-заполнителей с именем
_в одной области видимости. - Объявлены устаревшими небезопасные практики, такие как неявное преобразование перечислений в арифметических вычислениях или прямое сравнение массивов.






_large.png)