https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70476
--- Comment #16 from Maciej S. Szmigiero <mail at maciej dot szmigiero.name> --- > If you rely on the standard guarantee that extern "C" and extern "C++" make > function types different, you probably get compilation errors. It's the other way around - functions in standard-compliant code should have proper language linkage markings (including implicit markings). They are needed in case some compiler or platform decides that, for example, "C" and "C++" language linkages need to have different calling conventions. Which is something that the standard allows. However, this bug is about having internal linkage for all anonymous namespace functions (including the ones declared with "C" language linkage) - whether "C" and "C++" language linkages should be allowed to have different calling conventions is a different matter.