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

15.08.2019      15001

Комитет по стандартам языка программирования 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 130 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 7179 15.08.19 14:59 Сейчас в теме
А нам ето все зачем, мыж одинэсники, нам дебет-кредит, туда-сюда...
zqzq; DeFunes; +2 1 Ответить
7. protexprotex 136 15.08.19 15:06 Сейчас в теме
Не знаю как у других - но когда я на 1С месяц пишу - мозги плесневеют. Достаточно два дня на с++ проекты поробить - и мысль проясняется :-)
Synoecium; DeFunes; +2 Ответить
8. CheBurator 3377 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
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

См. также

OpenAI открывает доступ к API GPT-3

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

Компания OpenAI предоставила доступ к API (прикладному программному интерфейсу) алгоритмов обработки естественного языка GPT-3. Это открывает новые возможности для экспериментов с умными системами, которые могут имитировать человеческие возможности – например, писать стихи или отвечать на вопросы.

вчера в 17:22    2899    user1015646    0       

Компания JetBrains представила легковесный редактор Fleet

Новость ИТ-новость Новости компаний

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

вчера в 15:55    2972    ЕленаЧерепнева    3       

Разработчики Astra Linux создали аналог Microsoft Active Directory

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

Группа компаний «Астра» представила службу ALD Pro, которая замещает в российской ОС Astra Linux решение Microsoft Active Directory. Поддержку этой функции от системы часто требуют госзаказчики.

вчера в 13:57    3877    VKuser24342747    1       

Специальный алгоритм очистит данные переписи населения

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

В России завершился первый этап Всероссийской переписи населения. Росстат будет в автоматическом режиме очищать собранные данные от продублированных записей при помощи российской BI-системы.

26.11.2021    4179    VKuser24342747    0       

В офисах Google появились универсальные роботы

Новость Автоматизация ИТ-новость Новости компаний

Офисы Google в Маунтин Вью, штат Калифорния, теперь станут гораздо чище. К уборке привлекли универсальных роботов, разработанных X Company, которая, как и поисковый гигант, входит в состав холдинга Alphabet.

25.11.2021    4498    user1015646    2       

Вышло крупное обновление для TypeScript с автодополнением кода

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

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

24.11.2021    6416    VKuser24342747    4       

GitHub назвал три ключевых тренда в разработке за 2021 год

Новость GitHub Аналитика ИТ-новость

GitHub провел традиционное ежегодное исследование Octoverse, чтобы определить основные направления развития ИТ-индустрии. В 2021 году актуальными стали вопросы быстрого написания кода и подготовки документации.

24.11.2021    6551    VKuser24342747    0       

Рособрнадзор прекратит использовать Windows при проведении ЕГЭ

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

Единый государственный экзамен к концу 2024 года будет проходить без использования ОС Windows во всех местах, где можно сдать тестирование. Вместо нее будет установлена российская система.

23.11.2021    4745    VKuser24342747    5       

Google выпустил версию браузера Chrome 96

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

Новая актуальная версия Google Chrome 96 получила расширение инструментов для веб-разработчиков и экспериментальные функции в мобильной версии.

23.11.2021    4203    VKuser24342747    1       

Через Госуслуги компании подтвердили 13,3 млн корпоративных SIM-карт

Новость Безопасность ИТ-новость Телекоммуникации

Министерство цифрового развития сообщило, что компании соблюдают новые требования закона «О связи» и уже зарегистрировали на портале госуслуг 13,3 млн рабочих SIM-карт.

22.11.2021    6655    VKuser24342747    1       

Visual Studio 2022 и .NET 6: что нового

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

Microsoft выпустила свежий релиз одной из самых популярных сред разработки. Вместе с Visual Studio 2022 представили обновленную платформу .NET 6.

22.11.2021    5720    user1015646    0       

Программист разработал поисковую систему без слежки за пользователями

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

Бывший разработчик из компании Salesforce Ричард Сокер открыл публичный доступ к своему поисковому сервису You. В нем нет никаких трекеров личных данных и рекламных материалов.

18.11.2021    4911    VKuser24342747    3       

«Сбер» обучил нейросеть ruGPT-3 генерировать программный код

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

Новая функция самой большой генеративной AI-модели для русского языка получила название JARVIS. Сейчас сервис способен работать с языками программирования Java, Python и JavaScript.

18.11.2021    4854    VKuser24342747    2       

Университет Иннополис создал уникальный российский индустриальный блокчейн

Новость Блокчейн ИТ-новость

В России разработан блокчейн InnoChain, который предназначен для использования в закрытых сетях. С его помощью можно подписывать договоры и планировать объемы продаж.

17.11.2021    5653    VKuser24342747    0       

В Dropbox появились «автоматизированные папки» и новая система тегов

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

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

17.11.2021    4512    SKravchenko    1       

Microsoft выпустит платформу Defender for Business

Новость ИТ-новость Новости компаний

Microsoft Defender for Business станет частью комплексного решения Microsoft 365 Business Premium, которое объединяет Microsoft Teams и Office 365 с основными инструментами безопасности для малого и среднего бизнеса.

16.11.2021    2862    SKravchenko    0       

Adobe Photoshop и Illustrator стали доступны онлайн

Новость

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

11.11.2021    4145    user1015646    0       

Что нового в SQL Server 2022

Новость СУБД MS SQL ИТ-новость Новости компаний

Microsoft на ежегодной конференции Microsoft Ignite анонсировала предварительную версию SQL Server 2022 – теперь СУБД включает интеграцию с базой Azure SQL, службой аналитики Azure Synapse Analytics и платформой управления данными Azure Purview.

11.11.2021    8771    SKravchenko    0       

«Сбер» представил нейросеть для генерации картинок по описанию

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

Сервис ruDALL-E способен генерировать изображения с нуля по текстовому описанию на русском языке. Авторы полагают, что модель будет полезна для создания рекламного, архитектурного и промышленного дизайна.

11.11.2021    5862    VKuser24342747    10       

Правительство собирается определить главный российский процессор

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

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

10.11.2021    5502    VKuser24342747    4       

Первая стабильная версия Microsoft Edge стала доступна для Linux

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

В репозиториях Linux на портале Microsoft появилась стабильная версия браузера Edge. Пакет под названием microsoft-edge-stable_95 доступен для пользователей Ubuntu, Debian, Fedora и openSUSE.

10.11.2021    5361    VKuser24342747    0       

Microsoft выпустит версию Windows 11 для слабых компьютеров

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

Microsoft намерена представить ОС Windows 11 SE для устройств начального уровня. Для работы операционной системы будет достаточно ноутбука на базе процессора Intel Celeron.

08.11.2021    4405    VKuser24342747    3       

Нейросеть GitHub Copilot стала доступна в Neovim и разработках JetBrains

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

Ассистент программиста GitHub Copilot, генерирующий код при помощи ИИ, включен в последние версии редактора кода Neovim, а также в IDE IntelliJ и PyCharm от компании JetBrains.

08.11.2021    7529    VKuser24342747    1       

Правительство совместно с ИТ-компаниями подготовили кодекс этики в сфере ИИ

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

Правительство, «Сбер», «Яндекс», VK и другие российские компании подготовили документ, который содержит рекомендации для бизнеса по морально-этическим вопросам использования ИИ.

03.11.2021    5018    VKuser24342747    8       

Аналитики Gartner назвали 12 наиболее перспективных технологий в 2022 году

Новость Аналитика ИТ-новость

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

03.11.2021    5713    VKuser24342747    2