¿Una declaración que usa "auto" coincide con una declaración externa que usa un especificador de tipo concreto?

Considere el siguiente programa:

extern int x;
auto x = 42;
int main() { }

Clang 3.5 lo acepta (demo en vivo), GCC 4.9 y VS2013 no (demostración en vivo para el primero) ¿Quién tiene razón y dónde se especifica el comportamiento correcto en el Estándar C ++?