LINUX.ORG.RU

Стандарт C++20 утверждён

 


2

10

https://www.reddit.com/r/cpp/comments/f47x4o/202002_prague_iso_c_committee_trip_report_c20_is/

Желающие могут попробовать написать новость.

По виду std::format больше похож на fmt, чем на boost::format, что не может не радовать.

Небольшой обзор есть в статье на Хабре: https://m.habr.com/ru/company/yandex/blog/488588/ от Антона Полухина.

★★★★★

Последнее исправление: grem (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

Кто мешает собирать код даже под старые системы новым компилятором?

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

eao197 ★★★★★
()
Ответ на: комментарий от abcq

Да, в vcpkg поддерживается только CMake.

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

eao197 ★★★★★
()

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

Вот, увидел ещё новую фичу, constexpr new, кто-нибудь может вкратце пояснить, что это за зверь такой.

Unicode4all ★★★★★
()
Ответ на: комментарий от hateyoufeel

остальные вроде сдохли

Вот intel, nvidia, embarcadero сейчас обидно было, особенно intel, т.к. остальные кроме него уже на основе llvm свои фронтэнды делают. Это только для x86 платформы.

grem ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Вашими либами и так никто не пользуется 😉.
Но, ок, не будем об этом.

и одна из причин - велосипеды для сборки вместо устоявшихся стандартов :)

Harald ★★★★★
()
Ответ на: комментарий от seiken

Звучит почти как «гб’шников»

В определённых кругах слова «комитетчик» и «гэбэшник» были синонимами.

anonymous
()
Ответ на: комментарий от Unicode4all

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

filosofia
()

Думаю дождаться когда они наконец сломают совместимость, после этого можно использовать.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

И что ты такое успеешь написать до слома, что не сможешь один раз пересобрать после?

anonymous
()
Ответ на: комментарий от hateyoufeel

Вроде же обратную совместимость никто не ломает.

Если правильно помню, что уже в C++17 не скомпилируется C++98 код, в котором используются std::auto_ptr и ключевое слово register.

eao197 ★★★★★
()
Ответ на: комментарий от hateyoufeel

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

А ты тут из праздного любопытства или не все решается через haskell/rust как этого хотелось бы?

anonymous
()
Ответ на: комментарий от seiken

У меня больше ассоциация с «комитетом спасения» столетней давности :)

dave ★★★★★
()
Ответ на: комментарий от anonymous

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

Я не сильно удивлюсь, если MSVC портируют под Linux.

oldstable
()
Ответ на: комментарий от oldstable

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

Im_not_a_robot ★★★★★
()
Ответ на: комментарий от hateyoufeel

А много ли их осталось? Гцц, шланг и мсвц, остальные вроде сдохли.

Разработчик IBM XL Compilers входит в комитет.

anonymous
()
Ответ на: Серьезно? от anonymous

Теперь большая часть низкоуровневых C-трюков гарантированно работает в C++.

Новая фича - хорошо забытая старая фича.

В C это именно что трюки, статус которых с точки зрения стандарта ненадёжно определён, а в C++ — явно определённое поведение.

anonymous
()
Ответ на: комментарий от moot

загулил этот ваш std::format…

вы что, хотите сказать что плюсовики сейчас вместо старого доброго printf используют эту хрень?


Что у них там - хз. Но если в printf накосячить с типами, тут точно ад и израиль.

hbars ★★★★★
()
Ответ на: комментарий от oldstable

Дебиановские тулзы, похоже заточены под autotools.

Уже почти 3 года как meson поддерживается:

debhelper (10.3) experimental; urgency=medium
...
  [ Michael Biebl ]
  * Add support for meson + ninja build systems.  (Closes: #795253)
...
 -- Niels Thykier <niels@thykier.net>  Sat, 06 May 2017 13:29:31 +0000

Например rules из пакета graphene:

override_dh_auto_configure:
	dh_auto_configure -- $(CONFFLAGS)

И тем временем не просто поддерживается, а никакой особенной meson специфики не требуется.

Лог:

...
make[1]: Entering directory '/<<PKGBUILDDIR>>'
dh_auto_configure -- --libexecdir=/usr/lib -Dgtk_doc=true
	cd obj-x86_64-linux-gnu && LC_ALL=C.UTF-8 meson .. --wrap-mode=nodownload --buildtype=plain --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=lib/x86_64-linux-gnu --libexecdir=/usr/lib -Dgtk_doc=true
The Meson build system
Version: 0.51.2
Source dir: /<<PKGBUILDDIR>>
Build dir: /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu
Build type: native build
Project name: graphene
Project version: 1.10.0
...
gag ★★★★★
()
Ответ на: комментарий от anonymous

В таком случае они мало чем (патчами) отличается от amd компиляторов oacc, если всё на основе clang.

grem ★★★★★
() автор топика
Ответ на: комментарий от anonymous

А ты тут из праздного любопытства или не все решается через haskell/rust как этого хотелось бы?

И то и другое, конечно же. Хотя C++ я использую по минимуму сейчас.

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

С чего бы? Для сборки разве что только, потому что гуй через WSL работает крайне паршиво и требует X-сервер.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от eao197

Деньги. Для больших коммерческих разработок MSVS покупать нужно.

Даже для сборки? Тут я не в теме и под венду не писал. С другой стороны, переводить жирное легаси на что-то новое и тем более на другой компилятор – тот ещё ад. MS хорошо умеют подсаживать на свои продукты.

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Первые два имеют одинаковые флаги и прочее… Хотя для начала на мсвц можно просто болт положить.

Неправильно. Это просто clang под всех подстраивается. Он точно так же умеет понимать флаги MSVC, иначе бы он не был бесшовной заменой компилятора в Visual Studio.

Так что можно сказать: «Вторые два имеют одинаковые флаги и прочее. А на gcc можно болт положить»

fsb4000 ★★★★★
()
Последнее исправление: fsb4000 (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

Даже для сборки?

Э… что значит «для сборки»?

Нет отдельного продукта «VC++», ставится VisualStudio из которой уже можно поставить то, что нужно. Скажем, только VC++. Или только C#.

Соответственно, если под условия легального использования community edition не попадаешь, то покупаешь VS.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Э… что значит «для сборки»?

Нет отдельного продукта «VC++», ставится VisualStudio из которой уже можно поставить то, что нужно. Скажем, только VC++. Или только C#.

Погоди, ты сейчас хочешь сказать, что для сборки проекта в CI нужна отдельная копия всей IDE под названием Microsoft Visual Studio? И что нельзя, например, в качестве CI-агента поставить Windows Server Core без гуя, закинуть туда компилятор с библиотеками, и потом просто тыкать кнопочку в гитлабе/женкинсе/тимшитти чтобы весь проект собрался?

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Даже для сборки?

Напомнило «А если я картинки из браузера не сохраняю, трафик ведь не расходуется? Я же их просто смотрю».

grem ★★★★★
() автор топика
Ответ на: комментарий от hateyoufeel

закинуть туда компилятор с библиотеками

Нужна лицензия. Ты можешь ставить только Build tools, но лицензия всё равно нужна.

fsb4000 ★★★★★
()
Ответ на: комментарий от hateyoufeel

Полагаю, что для этих целей у них есть другие продукты.

grem ★★★★★
() автор топика
Ответ на: комментарий от hateyoufeel

Для совсем бомжей есть вариант:

  1. Использовать бесплатный открытый форк MSBuild: https://blog.jetbrains.com/dotnet/2018/04/13/introducing-jetbrains-redistributable-msbuild/

  2. В качестве компилятора использовать LLVM Clang.

Если сложить эти две вещи, то можно собирать проекты для которых нужна Visual Studio бесплатно и не нарушая лицензий.

fsb4000 ★★★★★
()
Ответ на: комментарий от fsb4000

Если сложить эти две вещи, то можно собирать проекты для которых нужна Visual Studio бесплатно и не нарушая лицензий.

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

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Выдернуть конпелятор cl.exe то можно, но официально отдельно его мелкософт не поставляет, только в составе студии. Раньше поставлял когда-то

Harald ★★★★★
()

Да и вообще, MSVS не нужен, когда есть mingw-w64

Harald ★★★★★
()
Ответ на: комментарий от hateyoufeel

Потому что сборка любого большого проекта это считай отдельный подпроект. Насчёт cabal для хацкеля не знаю, а вот растовый cargo при хождении влево-вправо начинает причинять боль настолько, что иногда оказывается проще выпилить к херам и использовать старый-недобрый make.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от moot

За старый-добрый printf в плюсовом коде надо канделябром.

Dark_SavanT ★★★★★
()

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

Einstok_Fair ★★☆
()
Ответ на: комментарий от Dark_SavanT

вот растовый cargo при хождении влево-вправо начинает причинять боль настолько, что иногда оказывается проще выпилить к херам и использовать старый-недобрый make.

Можно пример таких хождений?

Для хацкелла я знаю только один пример проекта где cabal не работает – это сам GHC. Но он и должен собираться без кабала как минимум для бутстрапа, так что тут ничего не поделаешь.

hateyoufeel ★★★★★
()
Ответ на: комментарий от Dark_SavanT
  1. Появившиеся фичи теперь стандартизованы.

  2. Иди в сад.

grem ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.