名前空間
変種
操作

モジュール (C++20以上)

提供: cppreference.com
< cpp‎ | language
 
 
C++言語
一般的なトピック
フロー制御
条件付き実行文
繰り返し文 (ループ)
ジャンプ文
関数
関数宣言
ラムダ関数宣言
inline 指定子
例外指定 (C++20未満)
noexcept 指定子 (C++11)
例外
名前空間
指定子
decltype (C++11)
auto (C++11)
alignas (C++11)
記憶域期間指定子
初期化
代替表現
リテラル
ブーリアン - 整数 - 浮動小数点
文字 - 文字列 - nullptr (C++11)
ユーザ定義 (C++11)
ユーティリティ
属性 (C++11)
typedef 宣言
型エイリアス宣言 (C++11)
キャスト
暗黙の変換 - 明示的な変換
static_cast - dynamic_cast
const_cast - reinterpret_cast
メモリ確保
クラス
クラス固有の関数特性
特別なメンバ関数
テンプレート
その他
 
 

モジュールは大量のコードを論理的な部品に分割するのに役立ちます。

モジュールは名前空間とは直交します。

// helloworld.cpp
export module helloworld;  // モジュール宣言。
import <iostream>;         // インポート宣言。
 
export void hello() {      // エクスポート宣言。
    std::cout << "Hello world!\n";
}
// main.cpp
import helloworld;  // インポート宣言。
 
int main() {
    hello();
}

[編集] 構文

export(オプション) module module-name module-partition(オプション) attr(オプション) ; (1)
export declaration (2)
export { declaration-seq(オプション) } (3)
export(オプション) import module-name attr(オプション) ; (4)
export(オプション) import module-partition attr(オプション) ; (5)
export(オプション) import header-name attr(オプション) ; (6)
module ; (7)
module : private ; (8)
1) モジュール宣言。 現在の翻訳単位がモジュールユニットであることを宣言します。
2,3) エクスポート宣言。 declaration または declaration-seq で宣言されたすべての名前空間スコープの宣言をエクスポートします。
4,5,6) インポート宣言。 モジュールユニット/モジュールパーティション/ヘッダユニットをインポートします。
7) グローバルモジュールフラグメントを開始します。
8) プライベートモジュールフラグメントを開始します。