Wir sind jetzt im Jahr 2020 und C ++ 20 kommt zusammen mit der lang erwarteten Funktion der C ++ - Module. Aber nachdem ich ein paar Vorträge über CppCon gesehen habe, finde ich, dass C ++ - Module an einem seltsamen Ort sind, insbesondere für Linux-Paketmanager (pacman, apt, emer, etc ...)
Nach dem, was ich gelernt habe, sind C ++ - Module
- Compiler abhängig
- Sie können kein von GCC in Clang erstelltes Modul verwenden
- GCC 9.1-Module funktionieren unter GCC 9.2 nicht
- Sie können viele verschiedene Versionen desselben Moduls haben
- Solange sie nicht in den gleichen Bereich exportiert werden
- Sie müssen ein Modul neu erstellen, wenn seine Abhängigkeiten aktualisiert werden
Mein Problem ist, dass in allen Rolling-Release-Distributionen Compiler ständig aktualisiert werden und der Benutzer möglicherweise einen eigenen Compiler-Build hat. Derzeit kann man einfach den Compiler aktualisieren oder auch aktualisieren libstdc++
. Bei Modulen scheint es jedoch naheliegend libstdc++
zu sein, aktualisiert zu werden, wenn der Compiler aktualisiert wird.
Wie würde der Paketmanager mit der Aktualisierung beispielsweise der STL umgehen, wenn der Compiler aktualisiert wird? Ich denke nicht, dass es möglich ist, jede Version des STL-Moduls für jede Version des Compilers zu erstellen. Der Benutzer muss auch kein eigenes STL-Modul erstellen.