Посмотрите на этот фрагмент:
int a;
extern int b;
auto b = a;
Хорошо ли он сформирован? Clang успешно компилирует его, но GCC и MSVC этого не делают.
(Эта проблема возникла, когда я ответил Как объявить и определить статический член с выведенным типом?)