https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82035
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- You are violating the one definition rule of c++ with different definition of Point. In c++ types have linkage and which is why anonymous namespaces were added so you get internal linkage for the translation units. Gold linker has an odr violation detector and if you turn on gcc's lto gcc will also detect this violation. I can't remember if the sanitorizers have an odr violation detector or not.