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

Грядет С++ 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 части языка сохранят.



Источник: https://infostart.ru/journal/news/tekhnologii/gryadet-s-20-chto-vklyuchat-v-novuyu-redaktsiyu_1108518/
Автор:
Ксения Шестакова Обозреватель


Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. cmd_vasec 34 15.08.19 13:19 Сейчас в теме
А как это повлияет на 1с?
3. protexprotex 128 15.08.19 14:34 Сейчас в теме
(1) 1С также пишется на с++. Ну вот и поэкспериментируют на 1С :-)
5. alex_bitti 112 15.08.19 14:40 Сейчас в теме
(1) думаю поднимут цену на итс подписку)) надо же быть в тренде
kuzyara; FarhadIlyazov; 3vs; KostyaBu; Dorosh; CyberCerber; +6 Ответить
2. s22 19 15.08.19 13:39 Сейчас в теме
Концепты НЕ будут частью стандарта
4. protexprotex 128 15.08.19 14:35 Сейчас в теме
По поводу макросов - это интересно. В с++ макросы, конечно, реализованы не очень.
6. Evil Beaver 6959 15.08.19 14:59 Сейчас в теме
А нам ето все зачем, мыж одинэсники, нам дебет-кредит, туда-сюда...
zqzq; DeFunes; +2 1 Ответить
7. protexprotex 128 15.08.19 15:06 Сейчас в теме
Не знаю как у других - но когда я на 1С месяц пишу - мозги плесневеют. Достаточно два дня на с++ проекты поробить - и мысль проясняется :-)
Synoecium; DeFunes; +2 Ответить
8. CheBurator 3440 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 128 16.08.19 08:15 Сейчас в теме
(8) Это потому, что других вариантов нет. Монополисты. Но 1С по удобству равных нет, но это значит, что нет равных по технологическим решениям.
Оставьте свое сообщение

См. также

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

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

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

вчера в 15:20    887    SKravchenko    2       

Мэрия Москвы разработала мессенджер для замены Telegram и Skype

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

Российская компания ID Partner совместно с правительством Москвы создала приложение TDM Messenger. Согласно описанию, оно позволяет полностью заменить другие мессенджеры, в том числе Telegram и Skype.

02.03.2021    1637    VKuser24342747    6       

Совсем взрослый стал: Python исполнилось 30 лет

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

Python является самым молодым из наиболее популярных языков программирования. Впрочем, все относительно: на днях Python исполнилось 30 лет.

02.03.2021    864    user1015646    1       

Энтузиасты создали для популярного эмулятора патч с поддержкой процессоров «Эльбрус»

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

Свободный эмулятор QEMU получил неофициальную поддержку отечественной архитектуры процессоров «Эльбрус». В разработке реализовано около 80% набора инструкций «Эльбрус-8С».

01.03.2021    1813    VKuser24342747    0       

Российский разработчик создал неофициальную версию Clubhouse для Android

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

Бывший разработчик из «ВКонтакте» Григорий Клюшников выпустил приложение для Android, предоставляющее доступ к большинству функций Clubhouse. Официально соцсеть доступна только пользователям iOS.

26.02.2021    2123    VKuser24342747    0       

Масштабное обновление Trello: пять новых видов досок и интеграция с Google Docs

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

Компания Atlassian выпустила масштабное обновление сервиса управления проектами Trello. Разработчики изменили дизайн, добавили пять новых видов досок и реализовали для карточек возможность отображать информацию из сторонних сервисов.

25.02.2021    3793    user1015646    0       

Видеоигра на базе нейросетевого генератора текстов стала бизнес-консультантом

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

Энтузиаст использовал возможности текстового квеста, генерирующего разнообразные миры при помощи нейросети GPT-3, чтобы получать советы по ведению бизнеса. Часть идей ИИ оказалась пригодной для использования.

25.02.2021    2210    VKuser24342747    1       

В ближайшие годы возрастет потребность в персонале центров обработки данных

Новость Дата-центры ИТ-новость Цифровая экономика

Согласно отчету Uptime Institute, количество сотрудников, необходимых для обеспечения работы ЦОД, вырастет с 2 млн. в 2019 году до 2,3 млн. в 2025 году.

24.02.2021    2164    SKravchenko    0       

Google кардинально изменит дизайн Android 12

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

Компания Google анонсировала глобальное обновление популярной операционной системы Android. Новая версия выйдет под номером 12. Говорят, что Android 12 назовут «Snow cone» – летний десерт из сладкого колотого льда.

24.02.2021    2562    mouse187    0       

Google представила новый сервис для поиска уязвимостей в открытом ПО

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

Компания Google запустила платформу с открытым исходным кодом OSV (Open Source Vulnerabilities). Она создана для поиска и закрытия уязвимостей в свободном ПО.

18.02.2021    1349    user1015646    0       

Отечественная компания представила сервер приложений Java EE

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

Российская компания Bellsoft представила отечественный аналог сервера Oracle и IBM для JavaEE. Раньше продукт на базе открытого кода был доступен только для некоторых клиентов организации.

17.02.2021    2384    VKuser24342747    4       

Rustоманы из Долины: Google, Microsoft, Huawei, Mozilla и AWS основали фонд поддержки языка программирования

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

Rust – перспективный язык, который широко применяется в разработке операционных систем и высоконагруженных веб-сервисов. Rust Foundation будет заниматься поддержкой и развитием языка.

16.02.2021    1620    user1015646    0       

В Microsoft Teams появилась платформа для общения и обучения

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

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

15.02.2021    3201    user1015646    0       

Google рассказала, как защищает Android от взломов

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

Google опубликовала информацию о том, как компания пытается улучшить безопасность Android, и какие шаги предпринимаются для борьбы с распространенными угрозами. Отчеты об уязвимостях играют в этом значительную роль.

12.02.2021    1925    SKravchenko    0       

Для регионов разработают приложение онлайн-записи на прием к врачам

Новость ИТ-новость Медицина Минкомсвязь Цифровая экономика

О возможностях приложения рассказали в Минздраве и Минцифре.

10.02.2021    1936    Senator_I    2       

Google разработает новую мобильную ОС

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

Корпорация Google создаст мобильную операционную систему для повышения безопасности использования устройств. Проект запущен под рабочим названием microdroid.

09.02.2021    2164    user1015646    0       

Google закрывает собственную игровую студию Stadia

Новость Google Видеоигры ИТ-новость Новости компаний

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

09.02.2021    1526    SKravchenko    0       

Google представила технологию для замены cookies

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

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

09.02.2021    1284    user1015646    0       

Украинская команда FireWay одержала победу в хакатоне NASA Space Apps Challenge 2020

Новость ИТ-новость Стартапы

Украинская команда FireWay из Днепра стала победителем международного хакатона NASA Space Apps Challenge. Их изобретение было описано как «решение, которое демонстрирует наиболее инновационное использование технологии».

05.02.2021    2004    SKravchenko    2       

Китайцы разработали целых две альтернативы Flash

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

Китайцам пришлось разработать собственную технологию ReFla взамен Flash для предотвращения сбоев в работе систем. Также они выпустили доработанную версию Flash Player с кодом 34.0.0.92.

04.02.2021    2143    mouse187    4       

Популярные дистрибутивы Linux могут лишиться поддержки Chromium

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

Из дистрибутивов Arch Linux, Fedora, Debian, Slackware и openSUSE может исчезнуть поддержка браузеров на движке Chromium. Причина – жесткие правила Google, из-за которых возникли проблемы с синхронизацией данных.

03.02.2021    2417    user1015646    3       

Microsoft участвует в разработке цифрового паспорта вакцинации от Covid-19

Новость ИТ-новость Медицина

Крупнейшие корпорации из сектора здравоохранения и ИТ-гиганты, такие как Microsoft, Salesforce и другие, объединились для создания цифровых идентификационных карт, которые подтверждают статус вакцинации против Covid-19.

02.02.2021    1788    capitan    3       

Что нового в Chrome 88: проверка надежности паролей и поддержка профилей

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

Компания Google представила новый релиз браузера Chrome и обновила движок Chromium. Теперь ПО будет предупреждать о небезопасных паролях, а пользователь сможет создать привязанный к учетной записи профиль для персонализации работы в сети.

01.02.2021    2258    user1015646    0       

280 символов для науки: Twitter откроет доступ ученым к архиву твитов

Новость ИТ-новость Соцсети

Twitter предоставит академическим исследователям социальных сетей бесплатный доступ почти ко всем твитам. Исключение площадка сделает только для заблокированных аккаунтов.

29.01.2021    1511    VKuser24342747    1       

Отключение Flash на сутки лишило город железнодорожных служб

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

Прекращение поддержки Flash парализовало работу железнодорожной сети китайского города-миллионника. Организация проигнорировала предупреждения Adobe о грядущем отключении технологии.

29.01.2021    1901    VKuser24342747    1