https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119844
--- Comment #4 from Nathaniel Shead <nshead at gcc dot gnu.org> --- (In reply to printfne from comment #3) > Thank you for the solution you proposed. It is indeed very useful. Besides, > I want to know if the C++ standard has any regulations on the symbols > exported in the module? For example, make them the same as those defined in > the cpp file? I'm not entirely sure what you're asking, sorry! But yes, generally if you forward declare and export an entity in the module, when defining it in a module implementation unit you must provide a compatible declaration, as with #includes.