モジュール

[C++]C++20モジュールの変遷 - Module TSからC++20DISまで

C++20のモジュールは確かにある一つの提案がベースになっているのですが、その後C++20策定完了までの間に複数の提案やIssue報告によってそこそこ大きく変化しています。その結果、C++20のモジュールはその全体像を把握するためにどれか一つの提案を読めばわ…

[C++]TU-local Entityをexposureするのこと(禁止)

モジュールと内部リンケージ名 例 TU-local Entities? TU-local Entityの曝露(exposure) TU-local Entityを曝露してたら・・・ テンプレート 明示的インスタンス化 メンバ関数の暗黙inline さんぷるこーど モジュールにおけるinlineの意味 モジュールリン…

[C++]推論補助(deduction guide)にexportはいるの?

A : いりません 根拠 モジュールにおけるexport宣言は、そのモジュールのインターフェース単位でのみ行うことができます。export宣言は名前を導入するタイプの宣言の前にexportを付けることで行い、その名前に外部リンケージを与える以外は元の宣言と同じ効…

[C++]モジュールにおける所有権モデル

モジュールにおける所有権とは、名前付きモジュールに属しているエンティティの名前に関する所有権の事で、次のようなコードがどう振舞うかを決定するものです。 /// moduleA.ixx export module moduleA; export int munge(int a, int b) { return a + b; } …

[C++]モジュールとプリプロセス

C++20より使用可能になるはずのモジュールは3つの新しいキーワードを用いて記述されますが、それらのキーワードは必ずしも予約語ではなく、コンパイラによる涙ぐましい努力によって特殊な扱われ方をしています。 ディレクティブ導入トークン モジュールディ…

[C++]モジュールインポート時の動的初期化順序

ほぼほぼ、2019年12月のBelfast会議で採択されたP1874R1 Dynamic Initialization Order of Non-Local Variables in Modulesの和訳しただけです。 モジュールについては以前の記事でもご参照ください。 onihusube.hatenablog.com P1874R1前夜の大問題 P1874R1…

[C++]モジュール理論 上級編(魔境編)

※この記事はC++20を相談しながら調べる会 #2の成果です。 ※この内容はC++20より有効なものです。C++20正式策定までの間に内容が変化する可能性があります。 importとmoduleというキーワード プリプロセッサの扱い マクロのエクスポート 名前が可視でなければ…

[C++]モジュール理論 基礎編

※この記事はC++20を相談しながら調べる会 #2の成果です。 ※この内容はC++20より有効なものです。C++20正式策定までの間に内容が変化する可能性があります。 より読みやすい解説がすでにあるのでそちらにも目を通されるといいと思われます。→ モジュール - cp…