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

15.08.2019     

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

См. также

Nvidia купит производителя чипов ARM

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

Производитель графических карт Nvidia заключил соглашение с японским холдингом Softbank. Цель – покупка разработчика процессоров ARM за 40 млрд долларов США.

сегодня в 13:21    388    user1015646    0       

Рассекречены характеристики процессоров Intel, которые сменят Atom

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

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

вчера в 11:05    2135    user1015646    0       

Деньги на ветер: Google опубликовала на Github исходники проекта Makani

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

Google выложила исходный код программного обеспечения для управления системой ветрогенераторов. Проект, для которого разработаны исходники, уже закрыт, но они почти целиком стали доступны как open source.

вчера в 09:48    2494    VKuser24342747    0       

Microsoft подвела итоги эксперимента по размещению своих дата-центров под водой

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

Проект «Natick», в рамках которого сервера в герметичном контейнере разместили в океане недалеко от Шотландии, длился 5 лет. Недавно состоялся подъем контейнера и подведение итогов исследования.

18.09.2020    2888    ЕленаЧерепнева    0       

Прощай, браузер: Google разработает замену для Chrome OS

Новость ОС Google ИТ-новость

Google работает над созданием новой операционной системы под внутренним названием LaCrOs. Разработка должна заменить Chrome OS. Ключевое отличие – отказ от встроенного в ОС браузера.

18.09.2020    3699    VKuser24342747    0       

Android 11 представлен официально

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

Компания Google выпустила новую версию самой популярной в мире мобильной операционной системы. Android 11 – Red Velvet Cake – названа в честь торта «Красный бархат», получила новые настройки приватности, поддержку 5G, встроенную функцию записи экрана и опцию подтвержденных звонков от компаний.

18.09.2020    5307    user1015646    0       

Google объединила разработку no-code, управление API и бессерверные вычисления

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

Google Cloud объявила о запуске своей новой платформы бизнес-приложений, которая сочетает в себе управление через API с разработкой приложений без кода, а также с возможностями автоматизации и анализа данных.

18.09.2020    2499    SKravchenko    1       

Microsoft раскрыла исходники библиотеки для редактирования документов в облаке

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

Microsoft опубликовала исходный код собственного фреймворка Fluid. Компания использует его в Office 365 для создания облачных документов для совместного редактирования.

17.09.2020    1815    VKuser24342747    0       

Microsoft и VMware запустили облачный сервис Azure Spring для Java-разработчиков

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

Компания Microsoft совместно с VMware запустила сервис для облачной разработки – Azure Spring Cloud. Это комфортная среда для создания Java-приложений на платформе Microsoft Azure с использованием популярного фреймворка Spring Boot.

17.09.2020    1623    user1015646    0       

Приближается конец Adobe Flash Player

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

В июле 2017 года Microsoft вместе с Adobe объявили, что Adobe Flash Player больше не будет поддерживаться системой после декабря 2020. В соответствии с этим планом Microsoft прекратит и использование Flash Player в Edge и IE 11.

16.09.2020    2444    SKravchenko    1       

Утверждено крупное обновление языка С++

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

Выхода С++ 20 осталось ждать совсем недолго. Новый стандарт утвердила группа международной организации по стандартизации ISO – Working Group 21 (WG21).

15.09.2020    2563    user1015646    6       

GitHub победил: Microsoft закроет IDE Visual Studio Codespace

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

Microsoft в этом году запретит создавать новые проекты в облачной среде разработки Visual Studio Codespace. Вместо нее компания будет продвигать одноименный инструмент GitHub.

14.09.2020    2847    VKuser24342747    3       

Mozillа: история самой недооцененной технологической компании

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

В августе Mozilla запустила второй раунд увольнений за год. Хотя официальной причиной называют COVID-19, это свидетельствует о глубоком кризисе компании с долгой историей, которая приложила руку к созданию многих ИТ-стандартов и технологий.

11.09.2020    3054    SKravchenko    1       

Microsoft изучают LTO + PGO для ядра Linux

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

Ян Бирман – менеджер по разработке программного обеспечения в Microsoft – представил на конференции Linux Plumbers Conference доклад об исследовании профильной оптимизации ядра Linux.

10.09.2020    2997    SKravchenko    2       

Microsoft выпустила официальные ISO-образы Windows 10 20H2 для инсайдеров

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

Microsoft активно работает над следующей версией Windows 10, известной как 20H2. Она будет выпущена в конце 2020 года. И недавно 20H2 стала доступна в виде ISO-образов для коммерческих клиентов в бета-канале.

09.09.2020    1148    SKravchenko    2       

Устройства Huawei больше не будут получать патчи безопасности Android

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

Компания Google прекратила предоставление патчей безопасности для смартфонов и планшетов Huawei, которые работают под управлением Android. Это следствие политики американского правительства, которое ограничивает работу с китайскими партнерами.

09.09.2020    895    user1015646    3       

Google представила новый инструмент для Android-разработки Jetpack Compose

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

Компания Google запустила альфа-тест UI-фреймворка Jetpack Compose, предназначенного для создания приложений под Android. Инструментарий решения уже доступен в Android Studio 4.2.

09.09.2020    740    VKuser24342747    2       

Российские разработчики бесплатно передали Linux поддержку NTFS

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

Сообщество Linux получило драйвер для файловой системы NTFS, которая используется в Windows. Код решения бесплатно передали разработчики российской компании Paragon Software.

08.09.2020    2244    user1015646    0       

Google запустил портал для разработчиков Chrome OS

Новость ОС Google ИТ-новость

Компания Google представила новый портал ChromeOS.dev. Это ресурс, предназначенный для общения и предоставления информации всем разработчикам системы Chrome OS и приложений для нее.

07.09.2020    766    user1015646    0       

Facebook ждёт обрушения доходов от рекламы из-за повышенной конфиденциальности в iOS 14

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

26 августа Facebook предупредил рекламодателей, что новые инструменты Apple для борьбы с отслеживанием активности пользователей могут привести к падению доходов издателей более чем на 50 процентов.

04.09.2020    985    SKravchenko    2       

Энтузиасты демонстрируют Windows 10 для ARM с функцией, аналогичной Continuum

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

Недавние выпуски Windows 10 на ARM позволили энтузиастам включить поддержку двойного экрана. Некоторым разработчикам даже удалось воссоздать возможности Windows Phone Continuum.

03.09.2020    872    SKravchenko    0       

Программист из США попросил суд выдать ИИ патент на изобретение

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

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

03.09.2020    1033    VKuser24342747    30       

В Microsoft Word появились функция расшифровки аудио и голосовые команды

Новость Автоматизация Infostart Software Partners Искусственный интеллект Маркет

Компания Microsoft представила обновление офисного пакета Microsoft 365. Теперь в приложении Word доступны функция расшифровки аудиозаписей и поддержка голосовых команд.

03.09.2020    1321    user1015646    3       

Разработчики языка Rust и компания Mozilla объявили о намерении создать фонд Rust Foundation

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

Команда Rust – исследовательский проект спонсируемый Mozilla, планирует создать фонд. Сокращение 250 сотрудников компании Mozilla ускорило принятие этого решения.

01.09.2020    937    SKravchenko    1       

Минкомсвязь озвучила требования к социально значимым сайтам

Новость Интернет ИТ-новость Минкомсвязь

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

01.09.2020    865    user1015646    0