Look at this snippet:
int a;
extern int b;
auto b = a;
Is it well-formed? Clang successfully compiles it, but GCC and MSVC don't.
(This issue has come up when I answered How to declare and define a static member with deduced type?)
clang is correct, the logic is that this is allowed by [dcl.spec.auto]
and to restrict this for deduced return types [dcl.spec.auto]p11 was added otherwise there is no restriction and therefore this is not restricted for the variables case.