元々昨年2月のリリースが計画されていた、C++20は最終的な技術的承認を受けており、年内に発表される予定だ。C++20には、主要な新機能の中にModules、Coroutines、およびConceptsが含まれる。

Modulesは、ヘッダファイルを不要にすることも目的とするコードをカプセル化する新しい方法を導入する。Herb Sutter氏は、Modulesの重要性を軽視することはできないと述べた:

C++にユーザが名前付きカプセル化境界を定義できる新機能を追加したのは、約35年ぶりです。

変数、関数、クラスに加えて、Modulesは、プログラマがエンティティに名前を付けて、なんらかの実装を隠す方法を提供する。これまでは、変数を使用して値をカプセル化し、関数を使用して動作をカプセル化し、クラスを使用して状態と動作をカプセル化することができた。Modulesは、変数、関数、クラスをすべて一緒にカプセル化するメカニズムを提供する。

これが、Modulesが将来のC++の進化に続けてさらなる改善を可能にする根本的な理由です。

これは、関数とその使用法を別のファイルにエクスポートする単純なModulesを定義する方法である:

// math.cppm
export module mod1;

export int identity(int arg) {
    return arg;
}

// main.cpp

import mod1;

int main() {
  identity(100);
}

#デベロップメント #ニュース #c++

C++20は最終版に、C++23がスターティングブロックに
1.50 GEEK