GCC で C++ のモジュールをテンプレートありで作りたい

internal compiler error というメッセージが出ています。 これは通常はコンパイラに問題 (バグ) があることを意味します。 プログラムに誤りが無くても現れることはあります。 コンパイラのアップデートがあればスルッと無くなることもあります。

発生に明瞭なルールがあるわけではないのでどのような状況で internal compiler error が起きて、どうやれば避けられるかは手探りで試すしか仕方ありません。 場合によってはある程度の条件を絞り込んだバグ報告が出ていることもあるかもしれませんがただの言語ユーザーとしてはコンパイラ内部の入り組んだ事情を把握して理解するのは困難なことが多いと思います。

モジュールは比較的に新しい機能なのでコンパイラの実装がこなれておらず、現時点ではあまり安心して使えません。

私が大雑把に試した感触ではおそらく println が書式文字列の解釈をコンパイル時にやるメカニズム (consteval 関連?) とモジュールの組み合わせを処理しきれていないように見えます。 モジュールを諦めるか、モジュールでやるなら std::printlnstd::format を諦めて std::cout<< で出力するかで一応はなんとかなります。

コメントを投稿

0 コメント