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

На протяжении многих лет C++ развивался через несколько версий и обновлений, добавляя новые функции и возможности, сохраняя при этом совместимость с предыдущими версиями. Последняя версия C++ — C++23, одобренная ISO в июле 2023 года. C++23 содержит несколько улучшений и дополнений к языку и стандартной библиотеке, такие как модули, контракты, сопрограммы, диапазоны, концепции и многое другое. Некоторые из новых возможностей C++23 включают в себя:

  • Модули. Эта функция позволяет организовывать код в модульные блоки, которые можно импортировать и экспортировать, не полагаясь на файлы заголовков и макросы. Модули улучшают скорость компиляции, читаемость и удобство сопровождения кода. Например, мы можем написать:
export module math; export int add(int x, int y) { return x + y; }

чтобы определить модуль с именем math, который экспортирует функцию с именем add, и написать

import math; int z = add(2, 3);

импортировать и использовать модуль в другом исходном файле

  • Контракты: эта функция позволяет указывать предварительные условия, постусловия и утверждения для функций и типов, которые можно проверять во время компиляции или выполнения. Контракты улучшают правильность, надежность и документацию кода. Например, мы можем написать:
int factorial(int n) [[expects: n >= 0]] [[ensures r: r > 0]] { int result = 1; 
for (int i = 1; i <= n; ++i) { result *= i; } return result; }

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

<int> get_answer() { co_await do_something(); co_return 42; }

определить сопрограмму с именем get_answer, которая возвращает объект задачи, которого может ожидать…