Ni GCC ni Clang cumplen con el estándar de C++
Neither GCC nor Clang are compliant with standard C++
En C++, los tipos de función tienen un 'language linkage' (C++, C u otro definido por la implementación), y el estándar establece que dos tipos con diferente linkage son distintos. Sin embargo, GCC y Clang no almacenan esta información en el tipo, lo que provoca que static_asserts que deberían fallar pasen y que sobrecargas válidas se rechacen. El autor argumenta que la culpa es del estándar, que debería hacer este comportamiento definido por la implementación, ya que cambiarlo en los compiladores rompería la ABI.
Dos tipos de función con diferentes language linkages son tipos distintos incluso si son idénticos en todo lo demás.