LINUX.ORG.RU

С++ standard library модули будут доступны в С++20

 


0

1

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

Что должно ускорить внедрение модулей в реальную жизнь так как больше проектов на С++20 чем на С++23.

https://github.com/microsoft/STL/issues/3945

★★★★★

Это очень круто, но что-то у меня такое ощущение, что import std заедет в линуксячие стандартные библиотеки когда с++23 будет уже везде. А уж в более-менее продакшн дистрибутивы попадёт совсем не скоро. И если поставить свежий компилятор достаточно просто, то обновлять стандартную библиотеку штука более геморройная и не всегда допустимая.

Но для win-only проектов наверное хорошо.

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

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

Сделать такое можно, но это лишний геморрой и не всегда допустимо. Ради import std такой фигнёй заниматься вряд ли хорошая идея, хотя кому как.

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

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

Ну тебе надо либо линковаться статически, либо таскать с собой so-шку стандартной библиотеки

Да

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

С чего бы? Просто обновить и все.

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

С чего бы? Просто обновить и все.

Ну это и есть сопровождение, да. Оно может ограничиться простым git pull и тестами. А может и вылиться во что-то более серьёзное. Я этим не занимался, но это точно лишний гемор. Ну и в идеале уязвимости отслеживать придётся, хотя на это все как правило забивают.

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

Тем, что include тянет другие include, которые мог бы не хотеть инклюдить тот кто инклюдит твой инклюд в свой код. А ещё в некоторых инклюдах есть макросы препроцессора, которые игнорируют неймспейсы. И, как я уже сказал, это не обязательно твои инклюды.

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

твои модули не зависят от других модулей.

То есть не будет так, что подключил сторонний хедер и код стал делать что-то другое.

экспортируется только то что ты хочешь, а не всё. То есть детали реализации не утекают.

Также не зависит от порядка import в отличие от порядка include

Также модули обязаны быть компилируемыми, а хедеры нет.

fsb4000 ★★★★★
() автор топика