GCCもClangも標準C++に準拠していない、と開発者が指摘
Neither GCC nor Clang are compliant with standard C++
C++標準は、言語リンケージが異なる関数型は別の型であると明確に規定しています。しかし、GCCとClangはこの規則を実装しておらず、`extern "C"`で宣言された関数型と通常の関数型を同一視しています。このため、`static_assert`が失敗すべきところで成功したり、オーバーロードが誤ってODR違反とみなされたりします。開発者のsebsite.pw氏は、責任はコンパイラではなく標準側にあり、この挙動を実装定義に変更すべきだと主張します。ABIの破壊を避けるため、コンパイラは現状を変更できないとしています。
GCCとClangは、型と言語リンケージの情報を保存しないため、異なる言語リンケージを持つ2つの関数が同一になることがあります。