Мы находимся в 2020 году, и C ++ 20 идет вместе с долгожданной функцией модулей C ++. Но после просмотра нескольких выступлений на CppCon я обнаружил, что модули C ++ находятся в странном месте, особенно для менеджеров пакетов Linux (pacman, apt, emerge и т. Д.)
Из того, что я узнал, модули C ++
- Зависит от компилятора
- Вы не можете использовать модуль, созданный GCC в Clang
- Модули GCC 9.1 не будут работать на GCC 9.2
- Вы можете иметь много разных версий одного и того же модуля
- Пока они не экспортируются в одну и ту же область
- Вам нужно перестроить модуль, если обновятся его зависимости
Моя проблема в том, что во всех дистрибутивах с непрерывным выпуском компиляторы постоянно обновляются, и у пользователя может быть своя собственная компиляция. В настоящее время можно просто обновить компилятор или также обновить libstdc++
. Но с модулями, кажется libstdc++
, нужно обновлять при обновлении компилятора.
Как менеджер пакетов будет обрабатывать обновление, например, STL при обновлении компилятора? Я не думаю, что возможно создание каждой версии модуля STL для каждой версии компилятора. Также пользователю не нужно создавать собственный модуль STL.