https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124268
--- Comment #6 from Ben Boeckel <bugzilla.gcc at me dot benboeckel.net> --- Why is `std` special? If it is not the provider of `export module std` that provides the initializer symbol, who should do it? If it is more than one, what happens with the umpteen copies of the initializer? If it is one, how is anyone going to know that they need to do it? Or is it expected that every project builds all modules they import and link their `.o` files? If that's the case, please provide a flag to only give the module initializer symbol in such an object because any C++ language symbols that also show up there are definitely in ODR-violation land. I will grant that the initializer symbol is an impl and I can imagine that there is a magic rule for it, but: - I do not believe that `import std` should be special (mechanically; CMake definitely makes it available in a magic way, but it is no different than a typical "module from another project" way at the moment) - There is no guarantee (AFAIK) that compiling `std.cc` will never provide non-initializer symbols that are also ODR-violating
