Грядет С++ 20: что включат в новую редакцию

15.08.2019      16809

Комитет по стандартам языка программирования C++ завершает разработку новой редакции. Разбираемся, какие изменения ждут программистов в C++ 20.

С++ станет безопаснее

Чем меньше язык ограничивает детали реализации, тем более гибкие решения могут создавать разработчики. Но есть и минус: растет вероятность ошибок, которые могут не проявиться до релиза, а через месяцы или годы. 

В С++ 20 введут явные константы. Формально constexpr появилось еще в С++ 11, но теперь ключевое слово стало рекомендацией для компилятора. Выражения с constexpr четко показывают, что функция возвращает константу. Причем стандарт позволит использовать функции virtual constexpr и конструкции try/catch внутри constexpr. Известно также, что функции внутри STL будут задействовать constexpr там, где это возможно. Внедрят и функцию, которая позволит понять, выполняется ли фрагмент кода внутри определения константы. 

Еще одно нововведение – consteval. Оно объявляет функцию как непосредственную, и в этом случае для вычисления результата функции во время выполнения могут использоваться другие неконстантные функции. Наконец, функцию можно объявить как constinit. Такой вариант предполагает, что объект инициализируется статически постоянным значением. 

Концепты будут частью стандарта

Делается это до компиляции. Если концепт обнаружил ошибку, он выдает конкретное сообщение, а не пачку связанных посланий. В результате экономится время разработки. Часть концептов включат в стандартную библиотеку. Но чтобы опробовать новые возможности, придется ждать, пока обновятся компиляторы. До этого можно установить GCC, который с шестой версии включает экспериментальные концепты, и использовать -fconcepts при компиляции. 

Появятся диапазоны, как в Python

Работа с диапазонами (range) – главный «синтаксический сахар» Python. Теперь что-то подобное будет и в С++. 

Диапазоны реализуют как итераторы, которые охватывают последовательность значений в коллекциях: списках, векторах и т.п. Постоянно перемещать начало и конец итератора в данном случае не нужно: диапазоны сохраняют их внутри.

Диапазоны также вводились в качестве экспериментальной функции, они зависят от концептов. В данном случае концепт позволяет оптимизировать обработку старого итератора, добавляя к уже обработанным значениям новые ограничения. Диапазоны работают не только со значениями, но и с представлениями (Views). Представление рассматривается как новая форма диапазона, которая позволяет фильтровать данные и возвращать измененную их версию как новый диапазон. 

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

Форматировать строки станет проще

Похоже, можно будет забыть о cout и тем более о printf(). Библиотека libfmt становится частью стандарта и интегрируется как std::format. Работа с ней также похожа на форматирование строк в Python. Разница только в синтаксисе формата строки. Вы сможете организовать центрированный вывод с символами заполнения или без них, определить правила форматирования для собственных типов и т.д. 

Макросы постепенно уходят

В С++ 20 реализуют альтернативу макросам препроцессора вроде __FILE__ и __LINE__. Экспериментальная функция source_location станет стандартом языка. Функция предоставляет доступ к имени файла, имени функции из контекста вызова или номеру строки. С ее помощью можно быстро реализовать пользовательский формат ведения журнала.

В целом разработчики стандартов С++ пытаются постепенно исключать препроцессор. А чтобы разделять исходный код и в финале заменить фундаментальную систему директив #include, внедряют модули. GCC и Clang уже поддерживают модули в экспериментальном формате. Можно посмотреть, как это работает, чтобы подготовиться к введению стандарта.

Будет еще много мелких, но важных нововведений

Coroutines (сопрограммы) – важный механизм, поддержку которого также добавят в С++ 20. Метод позволяет генерировать потоки исполнения кода поверх системных аппаратных потоков. Кроме того, добавят кооперативное прерывание потоков, интегрируют новую библиотеку синхронизации. 

Для трехсторонних сравнений появится оператор <=>. Чтобы уменьшить шум от разделения пространства имен, можно будет использовать using enum. Расширить возможности работы с лямбда-выражениями позволит пакет дополнений. Также в стандарте частично откажутся от volatile. В то же время для обеспечения обратной совместимости важные для volatile части языка сохранят.


Автор:
Обозреватель


Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. cmd_vasec 34 15.08.19 13:19 Сейчас в теме
А как это повлияет на 1с?
3. protexprotex 136 15.08.19 14:34 Сейчас в теме
(1) 1С также пишется на с++. Ну вот и поэкспериментируют на 1С :-)
5. alex_bitti 135 15.08.19 14:40 Сейчас в теме
(1) думаю поднимут цену на итс подписку)) надо же быть в тренде
kuzyara; FarhadIlyazov; 3vs; KostyaBu; Dorosh; CyberCerber; +6 Ответить
2. s22 19 15.08.19 13:39 Сейчас в теме
Концепты НЕ будут частью стандарта
4. protexprotex 136 15.08.19 14:35 Сейчас в теме
По поводу макросов - это интересно. В с++ макросы, конечно, реализованы не очень.
6. Evil Beaver 7729 15.08.19 14:59 Сейчас в теме
А нам ето все зачем, мыж одинэсники, нам дебет-кредит, туда-сюда...
zqzq; DeFunes; +2 1 Ответить
7. protexprotex 136 15.08.19 15:06 Сейчас в теме
Не знаю как у других - но когда я на 1С месяц пишу - мозги плесневеют. Достаточно два дня на с++ проекты поробить - и мысль проясняется :-)
Synoecium; DeFunes; +2 Ответить
8. CheBurator 3077 15.08.19 23:51 Сейчас в теме
(7) зато на 1С работает вся страна...
SagittariusA; 3vs; +2 Ответить
9. 3vs 16.08.19 07:17 Сейчас в теме
(8)"зато на 1С работает вся страна..."
Интересен смысл, вложенный в это выражение автором:
То ли вся страна пользуется продуктами 1С, то ли вся страна платит 1С дань!? :-)
В принципе, оба варианта имеют место... :-)
Fox-trot; SerVer1C; SagittariusA; starik-2005; +4 Ответить
10. protexprotex 136 16.08.19 08:15 Сейчас в теме
(8) Это потому, что других вариантов нет. Монополисты. Но 1С по удобству равных нет, но это значит, что нет равных по технологическим решениям.
11. пользователь 17.08.19 12:19
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

См. также

GitHub опубликовал статистику по языкам и проектам за 2022 год

Новость ИТ-новость Языки программирования Разработка

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

01.12.2022    1104    VKuser24342747    11       

Инспекторы смогут проводить дистанционные проверки через смартфон

Новость ИТ-новость Мобильные приложения

Минэкономразвития представило мобильное приложение, которое позволит осуществлять надзорные мероприятия бизнеса без посещения офиса. Программа работает через Госуслуги.

28.11.2022    1131    VKuser24342747    0       

«Яндекс» представил бесплатный сервис для быстрого поиска в облаке

Новость ИТ-новость Облачные технологии

Сервис Managed Service for OpenSearch от платформы Yandex Cloud предназначен для оптимизации поисковых систем и проверки стабильности и безопасности работы приложений. Услуга доступа в режиме Public Preview.

24.11.2022    1397    VKuser24342747    1       

В декабре начнут действовать новые правила регистрации доменов .RU и .РФ

Новость ИТ-новость Роскомнадзор

С 12 декабря Роскомнадзор получит право прекращать делегирование домена, если он оформлен нелегально, или на сайте содержится запрещенная в России информация.

23.11.2022    1151    VKuser24342747    1       

Stack Overflow запустил проект для оффлайн-доступа к форуму

Новость ИТ-новость Разработка

Проект под названием Overflow Offline позволяет скачать актуальную версию архива вопросов и ответов по разработке ПО. По объему данных база форума уступает только «Википедии».

02.11.2022    1149    VKuser24342747    1       

Минцифры запустило магазин российского ПО из реестра ИТ-решений

Новость Импортозамещение ИТ-новость

Маркетплейс «Руссофт» стал доступен для всех пользователей. С его помощью можно подобрать программы от отечественных разработчиков для решения корпоративных задач бизнеса.

21.10.2022    1629    VKuser24342747    4       

В ноябре начнется создание российского государственного аналога GitHub

Новость ИТ-новость

Правительство озвучило дату запуска эксперимента по разработке отечественного репозитория ПО. Исходники программ, в том числе разработанных для госорганов, будут публиковаться в нем под открытой лицензией.

19.10.2022    2371    VKuser24342747    14       

OpenAI опубликовала код системы распознавания речи Whisper

Новость Искусственный интеллект ИТ-новость

OpenAI открыла исходный код эталонной реализации на базе фреймворка PyTorch и набор уже обученных моделей для использования под лицензией MIT. Нейросеть используется для перевода речи в текст.

28.09.2022    2614    VKuser24342747    0       

Вторая версия среды разработки для плат Arduino вышла из бета-теста

Новость ИТ-новость Микроэлектроника

Arduino IDE 2.0 получила стабильную версию, в которой появилась поддержка автодополнения кода и темная тема. Разработка заняла несколько лет. Программа распространяется бесплатно.

23.09.2022    2641    VKuser24342747    0       

Основатель движения свободного ПО выпустил руководство по языку C

Новость Linux ИТ-новость Языки программирования

Ричард Мэттью Столлман, основатель Фонда свободного программного обеспечения, представил руководство по языку C и расширениям GNU. Пособие доступно всем желающим и предназначено как для опытных, так и начинающих программистов.

19.09.2022    2195    VKuser24342747    0       

«Ростелеком» предложил создать национальную экосистему на базе «Авроры»

Новость Импортозамещение ИТ-новость Мобильные приложения

Провайдер считает, что государственная мобильная экосистема поможет обеспечить технологическую независимость и экономический подъем страны. А ОС «Аврора» наиболее перспективная разработка для достижения этих целей.

15.09.2022    2151    VKuser24342747    5       

Яндекс выложил в открытый доступ инструмент для разработки мобильных приложений

Новость ИТ-новость Мобильные приложения Яндекс

Фреймворк DivKit от Яндекса стал доступен как open source решение. Инструмент позволяет менять интерфейс приложений без скачивания обновлений и значительно ускоряет мобильную разработку.

02.09.2022    1820    VKuser24342747    0       

Группа компаний «Астра» представила собственную мобильную ОС

Новость Linux ИТ-новость Мобильные приложения

Доработанная ОС Astra Linux Special Edition может быть запущена на большом числе мобильных устройств, в том числе на планшетах и смартфонах с процессорами на архитектурах ARM, «Эльбрус» и x86-64.

25.08.2022    1498    VKuser24342747    1       

В России разработаны меры для решения проблемы нехватки ИТ-специалистов

Новость ИТ-новость

Вице-премьер Дмитрий Чернышенко сообщил, что сейчас экономике страны не хватает 1 млн ИТ-специалистов. Способы преодоления дефицита закреплены в программе нацпроекта «Цифровая экономика»

05.08.2022    1654    VKuser24342747    11       

Яндекс открыл доступ к фреймворку для создания приложений с микросервисной архитектурой

Новость GitHub ИТ-новость Яндекс

Инструмент Userver опубликован как бесплатное open source решение. Яндекс уже несколько лет эффективно его использует в своих приложениях Go, «Еда», «Лавка», «Доставка» и другие. Фреймворк находится в стадии бета – переезда на открытую разработку.

02.08.2022    2500    VKuser24342747    19       

Бизнес сможет использовать повышающий коэффициент для расходов на покупку ПО

Новость ИТ-новость

Принят закон, который позволяет компаниям учитывать расходы на отечественные программы и радиоэлектронное оборудование с коэффициентом 1,5. Решения должны быть включены в соответствующие реестры и относиться к ИИ.

26.07.2022    2267    VKuser24342747    0       

Минэкономразвития тестирует миграцию с Windows 10 на Astra Linux

Новость ИТ-новость

Министерство проводит эксперимент, в ходе которого сотрудники используют российскую ОС Astra Linux вместо Windows 10. По словам главы департамента, эксперимент проходит успешно.

11.07.2022    1826    VKuser24342747    0       

Вышла версия открытого текстового редактора Vim 9.0

Новость ИТ-новость

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

07.07.2022    1995    VKuser24342747    0       

 «Яндекс» открыл доступ к SmartCaptcha и нейросети по генерации текстов 

Новость ИТ-новость Яндекс

Компания открыла доступ к алгоритму SmartCaptcha, который защищает сайт от спама и DDoS-атак, а также к проекту YaLM 100B, способному писать тексты на английском и русском языках. 

29.06.2022    2245    VKuser24342747    0       

«Яндекс» предложил разработчикам пройти диагностику технических навыков

Новость Кадровые агентства, подбор персонала ИТ-новость Яндекс

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

27.06.2022    2110    VKuser24342747    1       

GitHub открыл доступ всем разработчикам к ИИ-помощнику Copilot по подписке

Новость GitHub Искусственный интеллект ИТ-новость

Github Copilot стал общедоступным, но для его использования пользователю репозитория нужно приобрести подписку. Хотя некоторые разработчики могут пользоваться инструментом бесплатно.

24.06.2022    3803    VKuser24342747    1       

В России планируют учредить Федерацию спортивного программирования

Новость ИТ-новость

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

21.06.2022    2757    VKuser24342747    6       

Microsoft окончательно прекратила поддержку Internet Explorer

Новость Интернет ИТ-новость

Microsoft прекратила выпуск обновлений для своего браузера Internet Explorer, а с августа начнет удалять приложение из актуальных версий Windows. Эксперты полагают, что из-за этого пострадает много бизнес-пользователей.

17.06.2022    3254    VKuser24342747    4       

В России начал работу отечественный сервис мониторинга сбоев

Новость Импортозамещение Интернет ИТ-новость

Российская компания BrandAnalytics запустила платформу «Детектор сбоев», предназначенную для отслеживания работоспособности сайтов и сервисов, в том числе русскоязычных.

16.06.2022    2108    VKuser24342747    0       

Минцифры запустило систему отслеживания поддельных сайтов

Новость Безопасность Интернет ИТ-новость

Информационная система под названием «Антифишинг» способна обнаруживать мошеннические веб-ресурсы, которые выглядят как официальные сайты госорганов, компаний и соцсетей.

14.06.2022    2950    VKuser24342747    0