c++ modules

MSVCでのサポート

https://en.cppreference.com/w/cpp/compiler_support によるとMSVCでは19.28でサポートされている。

Visual Studioの設定

https://docs.microsoft.com/ja-jp/cpp/build/reference/experimental-module?view=msvc-170 に従い、 /std:c++20 experimental:module を指定する。

モジュールのエクスポート

拡張子はixx

export module mylib;

namespace mylib {
    export int myfunc() {
        return 999;
    }

    export class myclass {
    public:
        int myfunc() {
            return 888;
        }
    };
};

呼び出し側

import mylib;
...
std::cout << mylib::myfunc() << "\n";

mylib::myclass c;
std::cout << c.myfunc() << "\n";