July 19, 2026
C++ rulebook in its flop era
Neither GCC nor Clang are compliant with standard C++
The rulebook says one thing, the big compilers say “nah,” and commenters are losing it
TLDR: C++ says two kinds of functions should be treated differently, but GCC and Clang don’t, creating a mismatch between the official rules and real-world tools. Commenters split between fixing the standard, filing yet another report, and joking that this is exactly why people flee to newer languages.
This is one of those delightfully chaotic programmer fights where the official rulebook says one thing, the tools everyone actually uses say another, and the comment section immediately turns into group therapy. The issue: C++ has a rule saying a function marked as "C style" should count as a different type from a normal C++ function, even if they look identical. But the two giants of the field, GCC and Clang, reportedly treat them as the same anyway. Translation for normal humans: the language spec says these labels matter, but the most popular compilers mostly ignore them.
That gap sent readers straight into standards drama. One person dug up a 12-year-old issue and basically asked, "How is this still a thing?" Another gave the most exhausted answer imaginable: "Shrug, then write a defect report?" And then came the nuclear option: if you’re starting fresh, maybe just leave C++ entirely for Rust, Zig, or Odin because nobody should have to memorize this kind of trivia “for the love of the children.”
The funniest twist? Several commenters argued the standard itself is the awkward one here. If every major compiler behaves the same way and changing them would break old code, then maybe the so-called standard is the thing out of step with reality. That sparked a bigger philosophical brawl: are standards still sacred, or are they just paperwork trailing behind what people already use? In other words, the code bug was spicy, but the real entertainment was watching developers debate whether the map is wrong or the territory is.
Key Points
- •The article says the C++ standard defines function types with different language linkages, such as `"C"` and `"C++"`, as distinct types.
- •According to the article, GCC and Clang do not store language linkage as part of the function type.
- •The article demonstrates this with a `std::is_same` example that it says should fail under the standard but passes in GCC and Clang.
- •It also presents an overload example that the article says should compile but instead fails because the compilers treat the function pointer parameter types as identical.
- •The article argues that changing compiler behavior would likely cause an ABI break, so the standard may need to be updated instead.