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