我有以下两个文件:
//building.cpp
export module building;
export import building:apartment;
//apartment.cpp
module;
#include<iomanip>
export module building:apartment;
void test(){
std::streambuf* buf;
std::ostream os(buf);
os<<std::setw(17);
}
使用 GCC11,我做
$ g++ -c apartment.cpp -std=c++20 -fmodules-ts
$ g++ -c building.cpp -std=c++20 -fmodules-ts
此代码无法编译(内部编译器错误)。但是,如果我将 iomanip 包含在 apartment.cpp 和 building.cpp 中,我不会收到任何错误。我记得 MSVC 编译器也有类似的情况。我究竟做错了什么?模块文件及其分区中是否应该包含相同的包含语句?