現在2020年になり、待望のC ++モジュール機能とともにC ++ 20が登場します。しかし、CppConでのいくつかの講演を見た後、特にLinuxパッケージマネージャー(pacman、apt、emergeなど)の場合、C ++モジュールが奇妙な場所にあることがわかりました。
私が学んだことから、C ++モジュールは
- コンパイラ依存
- ClangでGCCによってビルドされたモジュールを使用することはできません
- GCC 9.1モジュールはGCC 9.2では機能しません
- 同じモジュールの多くの異なるバージョンを持つことができます
- 同じスコープにエクスポートされない限り
- 依存関係が更新された場合、モジュールを再構築する必要があります
私の問題は、すべてのローリングリリースディストリビューションで、コンパイラーが常に更新され、ユーザーが独自のコンパイラービルドを持っている可能性があることです。現在、コンパイラを更新するか、を更新することもできlibstdc++
ます。しかし、モジュールのlibstdc++
場合、コンパイラーの更新時に更新する必要があることを示唆しているようです。
パッケージマネージャーは、コンパイラーの更新時にSTLなどの更新をどのように処理しますか?コンパイラのすべてのバージョンに対してSTLモジュールのすべてのバージョンを構築することは現実的ではないと思います。また、ユーザーが独自のSTLモジュールを構築する必要はありません。